黑马程序员技术交流社区
标题:
通过==和equals()深入理解String
[打印本页]
作者:
扬帆起航fonnson
时间:
2016-7-3 18:16
标题:
通过==和equals()深入理解String
== equals()
true true String s1 = "abc";
String s2 = "abc";
在赋值过程中"abc"是常量,存储在常量池,s2获取的还是"abc"的地址值。
false true s2=new String("abc");
s2获取的是一个new String对象的地址值,不是"abc"的地址值。new String()是"abc"在堆内存中的副本。
true true s2="a"+"b"+"c";
java的常量优化机制在编译时会将常量进行合并优化。
false true s2="ab";
s2 =s2+"c";
系统创建一个StringBuffer或StringBuilder对象,存入s2,并用append()追加"c",最后通过toString()创建一个字符串对象存储"abc",所以地址值不同。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2