A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

==  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",所以地址值不同。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马