首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

String常量有关问题

2012-12-27 
String常量问题String s1 a String s2 s1 + b String s3 a + b System.out.println(s3

String常量问题
String s1 = "a";
String s2 = s1 + "b";
String s3 = "a" + "b";
System.out.println(s3 == s2); //打印FALSE
说明s3和s2指向不同的字符串对吗,不是说常量池中的字符串不会重复创建吗,就是说"ab"应该好像只有一份,这里不是重复创建了吗 ?


放在常量池中的都是编译期间就确定的,比如你这里面的s1和s3,但是对于s2来说,是不能再编译时确定其值的,因为s1是一个变量。只能在运行的时候才可以,所以s2会被分配到一个堆里,这样就有两份"ab",一个在常量池里,一个在堆里。如果你想最后打印的是true的话,你可以把s1声明为final类型的,这样s2在编译的时候就能确定其值了,这样常量池中就有一个"ab".

热点排行