@@ -130,7 +130,7 @@ Java 虚拟机(JVM)是运行 Java 字节码的虚拟机。JVM 有针对不
130130
131131##### 1.1.2.2. JDK 和 JRE
132132
133- JDK 是 Java Development Kit,它是功能齐全的 Java SDK。它拥有 JRE 所拥有的一切,还有编译器(javac)和工具(如 javadoc 和 jdb)。它能够创建和编译程序。
133+ JDK 是 Java Development Kit 缩写 ,它是功能齐全的 Java SDK。它拥有 JRE 所拥有的一切,还有编译器(javac)和工具(如 javadoc 和 jdb)。它能够创建和编译程序。
134134
135135JRE 是 Java 运行时环境。它是运行已编译 Java 程序所需的所有内容的集合,包括 Java 虚拟机(JVM),Java 类库,java 命令和其他的一些基础构件。但是,它不能用于创建新程序。
136136
@@ -162,12 +162,12 @@ JRE 是 Java 运行时环境。它是运行已编译 Java 程序所需的所有
162162- 都是面向对象的语言,都支持封装、继承和多态
163163- Java 不提供指针来直接访问内存,程序内存更加安全
164164- Java 的类是单继承的,C++ 支持多重继承;虽然 Java 的类不可以多继承,但是接口可以多继承。
165- - Java 有自动内存管理机制 ,不需要程序员手动释放无用内存
166- - ** 在 C 语言中,字符串或字符数组最后都会有一个额外的字符‘\0’ 来表示结束。但是,Java 语言中没有结束符这一概念。** 这是一个值得深度思考的问题,具体原因推荐看这篇文章: [ https://blog.csdn.net/sszgg2006/article/details/49148189 ] ( https://blog.csdn.net/sszgg2006/article/details/49148189 )
165+ - Java 有自动内存管理垃圾回收机制(GC) ,不需要程序员手动释放无用内存
166+ - ** 在 C 语言中,字符串或字符数组最后都会有一个额外的字符` '\0' ` 来表示结束。但是,Java 语言中没有结束符这一概念。** 这是一个值得深度思考的问题,具体原因推荐看这篇文章: [ https://blog.csdn.net/sszgg2006/article/details/49148189 ] ( https://blog.csdn.net/sszgg2006/article/details/49148189 )
167167
168168#### 1.1.5. 什么是 Java 程序的主类 应用程序和小程序的主类有何不同?
169169
170- 一个程序中可以有多个类,但只能有一个类是主类。在 Java 应用程序中,这个主类是指包含 main() 方法的类。而在 Java 小程序中,这个主类是一个继承自系统类 JApplet 或 Applet 的子类。应用程序的主类不一定要求是 public 类,但小程序的主类要求必须是 public 类。主类是 Java 程序执行的入口点。
170+ 一个程序中可以有多个类,但只能有一个类是主类。在 Java 应用程序中,这个主类是指包含 ` main() ` 方法的类。而在 Java 小程序中,这个主类是一个继承自系统类 JApplet 或 Applet 的子类。应用程序的主类不一定要求是 public 类,但小程序的主类要求必须是 public 类。主类是 Java 程序执行的入口点。
171171
172172#### 1.1.6. Java 应用程序与小程序之间有哪些差别?
173173
@@ -190,9 +190,10 @@ Java 语言既具有编译型语言的特征,也具有解释型语言的特征
190190
191191#### 1.2.1. 字符型常量和字符串常量的区别?
192192
193- 1 . 形式上: 字符常量是单引号引起的一个字符; 字符串常量是双引号引起的若干个字符
193+ 1 . 形式上: 字符常量是单引号引起的一个字符; 字符串常量是双引号引起的0个或若干个字符
1941942 . 含义上: 字符常量相当于一个整型值( ASCII 值),可以参加表达式运算; 字符串常量代表一个地址值(该字符串在内存中存放位置)
195- 3 . 占内存大小 字符常量只占 2 个字节; 字符串常量占若干个字节 (** 注意: char 在 Java 中占两个字节** )
195+ 3 . 占内存大小 字符常量只占 2 个字节; 字符串常量占若干个字节 (** 注意: char 在 Java 中占两个字节** ),
196+ > 字符封装类 ` Character ` 有一个成员常量 ` Character.SIZE ` 值为16,单位是` bits ` ,该值除以8(` 1byte=8bits ` )后就可以得到2个字节
196197
197198> java 编程思想第四版:2.2.2 节
198199> ![ ] ( http://my-blog-to-use.oss-cn-beijing.aliyuncs.com/18-9-15/86735519.jpg )
@@ -207,7 +208,7 @@ Java 中的注释有三种:
207208
2082093 . 文档注释。
209210
210- 在我们编写代码的时候,如果代码量比较少,我们自己或者团队其他成员还可以很轻易地看懂代码,但是当项目结构一旦复杂起来,我们就需要用到注释了。注释并不会执行,是我们程序员写给自己看的,注释是你的代码说明书,能够帮助看代码的人快速地理清代码之间的逻辑关系。因此,在写程序的时候随手加上注释是一个非常好的习惯。
211+ 在我们编写代码的时候,如果代码量比较少,我们自己或者团队其他成员还可以很轻易地看懂代码,但是当项目结构一旦复杂起来,我们就需要用到注释了。注释并不会执行(编译器在编译代码之前会把代码中的所有注释抹掉,字节码中不保留注释) ,是我们程序员写给自己看的,注释是你的代码说明书,能够帮助看代码的人快速地理清代码之间的逻辑关系。因此,在写程序的时候随手加上注释是一个非常好的习惯。
211212
212213《Clean Code》这本书明确指出:
213214
@@ -253,7 +254,7 @@ Java 中的注释有三种:
253254
254255在写代码的过程中,常见的一种情况是需要某个整数类型变量增加 1 或减少 1,Java 提供了一种特殊的运算符,用于这种表达式,叫做自增运算符(++)和自减运算符(-- )。
255256
256- ++ 和-- 运算符可以放在操作数之前,也可以放在操作数之后,当运算符放在操作数之前时 ,先自增/ 减,再赋值;当运算符放在操作数之后时 ,先赋值,再自增/ 减。例如,当“b = ++ a” 时,先自增(自己增加 1 ),再赋值(赋值给 b);当“b = a++ ” 时,先赋值(赋值给 b),再自增(自己增加 1 )。也就是,++ a 输出的是 a+ 1 的值,a++ 输出的是 a 值。用一句口诀就是:“符号在前就先加/ 减,符号在后就后加/ 减”。
257+ ++ 和-- 运算符可以放在变量之前,也可以放在变量之后,当运算符放在变量之前时(前缀) ,先自增/ 减,再赋值;当运算符放在变量之后时(后缀) ,先赋值,再自增/ 减。例如,当 `b = ++ a` 时,先自增(自己增加 1 ),再赋值(赋值给 b);当 `b = a++ ` 时,先赋值(赋值给 b),再自增(自己增加 1 )。也就是,++ a 输出的是 a+ 1 的值,a++ 输出的是 a 值。用一句口诀就是:“符号在前就先加/ 减,符号在后就后加/ 减”。
257258
258259#### 1.2 . 6. continue 、break 、和return 的区别是什么?
259260
@@ -582,7 +583,7 @@ private static class CharacterCache {
582583```java
583584 Integer i1 = 40 ;
584585 Integer i2 = new Integer (40 );
585- System . out. println(i1== i2);// 输出 false
586+ System . out. println(i1 == i2);// 输出 false
586587```
587588** Integer 比较更丰富的一个例子: **
588589
@@ -863,9 +864,9 @@ public int f4(int a, int b) {
863864```java
864865// return在无返回值方法的特殊使用
865866public void f5(int a) {
866- if (a> 10 ) {
867- return ;// 表示结束所在方法 (f5方法)的执行,下方的输出语句不会执行
868- }
867+ if (a > 10 ) {
868+ return ;// 表示结束所在方法 (f5方法)的执行,下方的输出语句不会执行
869+ }
869870 System . out. println(a);
870871}
871872```
@@ -895,7 +896,7 @@ Java 程序在执行子类的构造方法之前,如果没有用 `super()`来
895896
896897#### 2.1 . 4. 成员变量与局部变量的区别有哪些?
897898
898- 1. 从语法形式上看: 成员变量是属于类的,而局部变量是在方法中定义的变量或是方法的参数 ;成员变量可以被 public ,private ,static 等修饰符所修饰,而局部变量不能被访问控制修饰符及 static 所修饰;但是,成员变量和局部变量都能被 final 所修饰。
899+ 1. 从语法形式上看: 成员变量是属于类的,而局部变量是在代码块或方法中定义的变量或是方法的参数 ;成员变量可以被 public ,private ,static 等修饰符所修饰,而局部变量不能被访问控制修饰符及 static 所修饰;但是,成员变量和局部变量都能被 final 所修饰。
8999002. 从变量在内存中的存储方式来看: 如果成员变量是使用`static `修饰的,那么这个成员变量是属于类的,如果没有使用`static `修饰,这个成员变量是属于实例的。而对象存在于堆内存,局部变量则存在于栈内存。
9009013. 从变量在内存中的生存时间上看: 成员变量是对象的一部分,它随着对象的创建而存在,而局部变量随着方法的调用而自动消失。
9019024. 成员变量如果没有被赋初值: 则会自动以类型的默认值而赋值(一种情况例外: 被 final 修饰的成员变量也必须显式地赋值),而局部变量则不会自动赋值。
0 commit comments