黑马程序员技术交流社区

标题: 通过==和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