From 3c2745df4a379761f4f8e9b374e0f404b657cced Mon Sep 17 00:00:00 2001 From: target <26007894+geomonlin@users.noreply.github.com> Date: Sun, 13 Mar 2022 16:45:35 +0800 Subject: [PATCH] Update memory-area.md update error word --- docs/java/jvm/memory-area.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/java/jvm/memory-area.md b/docs/java/jvm/memory-area.md index 46a24bdb..176d7278 100644 --- a/docs/java/jvm/memory-area.md +++ b/docs/java/jvm/memory-area.md @@ -365,7 +365,7 @@ String d = str1 + str2; // 常量池中的对象 System.out.println(c == d);// true ``` -被 `final` 关键字修改之后的 `String` 会被编译器当做常量来处理,编译器在程序编译期就可以确定它的值,其效果就想到于访问常量。 +被 `final` 关键字修改之后的 `String` 会被编译器当做常量来处理,编译器在程序编译期就可以确定它的值,其效果就相当于访问常量。 如果 ,编译器在运行时才能知道其确切值的话,就无法对其优化。 @@ -457,7 +457,7 @@ System.out.println(s3==s4); // False 1. 对于基本数据类型来说,==比较的是值。对于引用数据类型来说,==比较的是对象的内存地址。 2. 在编译过程中,Javac 编译器(下文中统称为编译器)会进行一个叫做 **常量折叠(Constant Folding)** 的代码优化。常量折叠会把常量表达式的值求出来作为常量嵌在最终生成的代码中,这是 Javac 编译器会对源代码做的极少量优化措施之一(代码优化几乎都在即时编译器中进行)。 3. 一般来说,我们要尽量避免通过 new 的方式创建字符串。使用双引号声明的 `String` 对象( `String s1 = "java"` )更利于让编译器有机会优化我们的代码,同时也更易于阅读。 -4. 被 `final` 关键字修改之后的 `String` 会被编译器当做常量来处理,编译器程序编译期就可以确定它的值,其效果就想到于访问常量。 +4. 被 `final` 关键字修改之后的 `String` 会被编译器当做常量来处理,编译器程序编译期就可以确定它的值,其效果就相当于访问常量。 ### 4.2 String s1 = new String("abc");这句话创建了几个字符串对象?