mirror of
https://github.com/Snailclimb/JavaGuide
synced 2025-06-16 18:10:13 +08:00
Update memory-area.md
update error word
This commit is contained in:
parent
84ae035493
commit
3c2745df4a
@ -365,7 +365,7 @@ String d = str1 + str2; // 常量池中的对象
|
|||||||
System.out.println(c == d);// true
|
System.out.println(c == d);// true
|
||||||
```
|
```
|
||||||
|
|
||||||
被 `final` 关键字修改之后的 `String` 会被编译器当做常量来处理,编译器在程序编译期就可以确定它的值,其效果就想到于访问常量。
|
被 `final` 关键字修改之后的 `String` 会被编译器当做常量来处理,编译器在程序编译期就可以确定它的值,其效果就相当于访问常量。
|
||||||
|
|
||||||
如果 ,编译器在运行时才能知道其确切值的话,就无法对其优化。
|
如果 ,编译器在运行时才能知道其确切值的话,就无法对其优化。
|
||||||
|
|
||||||
@ -457,7 +457,7 @@ System.out.println(s3==s4); // False
|
|||||||
1. 对于基本数据类型来说,==比较的是值。对于引用数据类型来说,==比较的是对象的内存地址。
|
1. 对于基本数据类型来说,==比较的是值。对于引用数据类型来说,==比较的是对象的内存地址。
|
||||||
2. 在编译过程中,Javac 编译器(下文中统称为编译器)会进行一个叫做 **常量折叠(Constant Folding)** 的代码优化。常量折叠会把常量表达式的值求出来作为常量嵌在最终生成的代码中,这是 Javac 编译器会对源代码做的极少量优化措施之一(代码优化几乎都在即时编译器中进行)。
|
2. 在编译过程中,Javac 编译器(下文中统称为编译器)会进行一个叫做 **常量折叠(Constant Folding)** 的代码优化。常量折叠会把常量表达式的值求出来作为常量嵌在最终生成的代码中,这是 Javac 编译器会对源代码做的极少量优化措施之一(代码优化几乎都在即时编译器中进行)。
|
||||||
3. 一般来说,我们要尽量避免通过 new 的方式创建字符串。使用双引号声明的 `String` 对象( `String s1 = "java"` )更利于让编译器有机会优化我们的代码,同时也更易于阅读。
|
3. 一般来说,我们要尽量避免通过 new 的方式创建字符串。使用双引号声明的 `String` 对象( `String s1 = "java"` )更利于让编译器有机会优化我们的代码,同时也更易于阅读。
|
||||||
4. 被 `final` 关键字修改之后的 `String` 会被编译器当做常量来处理,编译器程序编译期就可以确定它的值,其效果就想到于访问常量。
|
4. 被 `final` 关键字修改之后的 `String` 会被编译器当做常量来处理,编译器程序编译期就可以确定它的值,其效果就相当于访问常量。
|
||||||
|
|
||||||
### 4.2 String s1 = new String("abc");这句话创建了几个字符串对象?
|
### 4.2 String s1 = new String("abc");这句话创建了几个字符串对象?
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user