提示:这里只记录我个人不熟悉的知识,并非所有内容

笔记目录

  • 课程:04-第一行代码
  • ① jshell
  • ② 对象.方法
  • 课程:05-第一份源码
  • ① Java开发程序的流程
  • ② 入口方法
  • 课程:06-常见问题-中文乱码
  • ① 乱码原因
  • ② 解决方法
  • 课程:09-为何要字节码



提示:以下是本篇文章正文内容,下面案例可供参考

课程:04-第一行代码

① jshell

介绍: jshell 是 Java 9 新增的开发工具,可以用于执行 Java 代码并立即获得执行结果。支持定义变量、方法、类等,支持输入语句、表达式,支持导入外部 Java 源文件。按照官方的定义,jshell 里用到的小块 Java 代码被称为“片段”。

java编程进阶 java编程速成_java编程进阶


java编程进阶 java编程速成_jvm_02

② 对象.方法

  • Java编程语言是面向对象编程,落到代码层面是“Java编程的代码都是由【对象.方法】构成”。举个例子:
/*
System.out是对象;
println("")是方法,是System.out对象所拥有的方法。
*/
System.out.println("Hello World");
  • 面向对象编程的原因:更符合人类对现实世界的认知,例如人吃饭,狗遛弯,人、狗就是对象,吃饭、遛弯就是方法(即可执行的操作/行为)。所以Java语言将代码块封装成对象,并设计好方法(可执行的行为/操作),然后用 “对象.方法” 来编程,即面向对象的编程。

课程:05-第一份源码

① Java开发程序的流程

  1. 编写源码文件(.java文件)(程序员主导的内容)
  2. 编译工具javac编译源码文件->字节码文件(.class文件)
  3. JVM编译字节码文件->机器码文件
  4. 计算机运行机器码文件

② 入口方法

入口方法: 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++编码的开发流程:

  1. 程序员编写源码
  2. 编译器将源码编译为机器码
  3. 计算机运行

java编程进阶 java编程速成_开发语言_03

但是不同系统,其对应的机器码格式不同,所以编译器有Linux编译器、Windows编译器的区分。如果采用直接将源码编译为机器码的开发流程,会出现以下问题

  • 程序员需要熟悉多个系统平台的编译器,导致学习成本增加;
  • 在Windows开发环境下的系统完成编译、测试后,如果需要部署到Linux系统,则需要重新编译和测试,会花费更多的时间和精力。

Java编码的开发流程:

  1. 程序员编写源码
  2. 编译器将源码编译为字节码
  3. JVM将字节码解释为机器码
  4. 计算机运行机器码文件

java编程进阶 java编程速成_java编程进阶_04

无论在任何系统/平台下,Java的编译器会将源码编译为所有系统通用的字节码,在然后再根据不同的系统平台,运行对应的JVM,将字节码转换成机器码进行运行。举个例子:在Windows开发环境下的源码,在部署到Linux系统时,原先在Windows环境里编译的字节码可以直接使用,无需重复编译,直接用Linux的JVM运行原先在Windows环境里编译的字节码即可,反之亦可。这么处理的好处

  • 程序员不需要熟悉多个系统的编译器,只需要工作在自己最熟悉的开发环境即可;
  • 开发完成的系统只需要在开发环境里进行编译即可,无需在部署系统进行二次编译。

会有哪些问题?

  • 需要在每个平台安装对应的虚拟机JVM;
  • 相比于源码->机器码,源码->字节码->机器码多了一个步骤,导致性能下降。