考察字符串,底层存储的理解
字符串一旦创建后,就是使用"final"进行修饰(不可变)。

考察字符串,底层存储的理解:
字符串一旦创建后,就是使用"final"进行修饰(不可变)。
字符串--默认保存在方法区中特定开辟的区域“常量池”。当不同的String对象引用相同的字符串时,就是指向同一个内存地址。
“==”比较的是内存地址
equals()--方法比较的是字符串的内容。
String s5 = s2 + "def";
s2属于引用类型,java编译器,在编译阶段是无法知道,引用类型的数值的。及无法使用编译器对其进行优化,只有在运行时,s2才能确定具体的值。
因此即使s2=“abc”在加上“def”后会创建一个新的内存地址然后赋值给s5..这样s4 和 s5 的内存地址是不相等的。所有s4==s5结果为false
s1==s6
String s1 = "abc";是在程序启动时生成,存放在常量池中。s6是运行时创建的,字符串对象是不会在常量池中保存。所以对比起索引值的结果为false;
