提示:这里只记录我个人不熟悉的知识,并非所有内容
笔记目录
- 课程:04-第一行代码
- ① jshell
- ② 对象.方法
- 课程:05-第一份源码
- ① Java开发程序的流程
- ② 入口方法
- 课程:06-常见问题-中文乱码
- ① 乱码原因
- ② 解决方法
- 课程:09-为何要字节码
提示:以下是本篇文章正文内容,下面案例可供参考
课程:04-第一行代码
① jshell
介绍: jshell 是 Java 9 新增的开发工具,可以用于执行 Java 代码并立即获得执行结果。支持定义变量、方法、类等,支持输入语句、表达式,支持导入外部 Java 源文件。按照官方的定义,jshell 里用到的小块 Java 代码被称为“片段”。
② 对象.方法
- Java编程语言是面向对象编程,落到代码层面是“Java编程的代码都是由【对象.方法】构成”。举个例子:
/*
System.out是对象;
println("")是方法,是System.out对象所拥有的方法。
*/
System.out.println("Hello World");
- 面向对象编程的原因:更符合人类对现实世界的认知,例如人吃饭,狗遛弯,人、狗就是对象,吃饭、遛弯就是方法(即可执行的操作/行为)。所以Java语言将代码块封装成对象,并设计好方法(可执行的行为/操作),然后用 “对象.方法” 来编程,即面向对象的编程。
课程:05-第一份源码
① Java开发程序的流程
- 编写源码文件(.java文件)(程序员主导的内容)
- 编译工具javac编译源码文件->字节码文件(.class文件)
- JVM编译字节码文件->机器码文件
- 计算机运行机器码文件
② 入口方法
入口方法: JVM只运行有入口方法的类。
class A{
/*
入口方法(也称为main方法);
static:表示这个方法不属于任何对象;
main:方法名。
*/
public static void main (String[] args){
System.out.println("Hello World");
}
}
课程:06-常见问题-中文乱码
① 乱码原因
Windows环境下,Java源文件默认的中文编码格式是UTF-8,而Java编译工具Javac默认的中文编码格式是GBK,编码格式不同导致编译后的字节码文件里中文是乱码。
② 解决方法
核心思路: 让源文件和Javac编译工具的中文编码格式一致即可
- 方法1:将Javac开发工具的中文编码格式修改为UTF-8
- 方法2:将源文件的中文编码格式修改为GBK
课程:09-为何要字节码
省流: 为了便于跨平台编程
C++编码的开发流程:
- 程序员编写源码
- 编译器将源码编译为机器码
- 计算机运行
但是不同系统,其对应的机器码格式不同,所以编译器有Linux编译器、Windows编译器的区分。如果采用直接将源码编译为机器码的开发流程,会出现以下问题:
- 程序员需要熟悉多个系统平台的编译器,导致学习成本增加;
- 在Windows开发环境下的系统完成编译、测试后,如果需要部署到Linux系统,则需要重新编译和测试,会花费更多的时间和精力。
Java编码的开发流程:
- 程序员编写源码
- 编译器将源码编译为字节码
- JVM将字节码解释为机器码
- 计算机运行机器码文件
无论在任何系统/平台下,Java的编译器会将源码编译为所有系统通用的字节码,在然后再根据不同的系统平台,运行对应的JVM,将字节码转换成机器码进行运行。举个例子:在Windows开发环境下的源码,在部署到Linux系统时,原先在Windows环境里编译的字节码可以直接使用,无需重复编译,直接用Linux的JVM运行原先在Windows环境里编译的字节码即可,反之亦可。这么处理的好处:
- 程序员不需要熟悉多个系统的编译器,只需要工作在自己最熟悉的开发环境即可;
- 开发完成的系统只需要在开发环境里进行编译即可,无需在部署系统进行二次编译。
会有哪些问题?
- 需要在每个平台安装对应的虚拟机JVM;
- 相比于源码->机器码,源码->字节码->机器码多了一个步骤,导致性能下降。