现在的位置: 首页 > 综合 > 正文

String是否相等的几种情况

2014年10月30日 ⁄ 综合 ⁄ 共 517字 ⁄ 字号 评论关闭

String相关操作:

String  s1 = “1”;

String  s2 = “1”;

此时s1,s2是同一个对象(s1 == s2 为true)。String是final的,”1”生成之后是不会在改变的,s1,s2都是”1”的引用。

String s1 = new String(“1”);

String s2 = new String(“2”);

此时s1,s2不是同一个对象,他们括号中的”1”都是指的同一个对象。这相当于根据”1”生成的两个String对象,不是同一个对象。

String s1 = “a”; String s2 = “b”;

String s3 = s1 + s2;

String s4 = s1 + s2;

此时s3 和s4不是同一个对象。分别由s1 和s2拼接成的新字符串对象。

String s1 = “a”;

String s2 = “b”;

String s3 = “a” + “b”;

String s4 = “a” + “b”:

String s5 = s1 + “b”;

此时s3 和s4是同一个对象。编译器发现”a”和”b”都是常量会帮我们优化成String s3 = “ab” String s4 = “ab”,此时还没有编译成字节码,所以他们是同一个对象。而s3 跟s5就不是同一个对象了,s5中s1是变量,并不是常量,编译器不会帮我们优化。

抱歉!评论已关闭.