读书人

String初始化有关问题

发布时间: 2011-12-21 23:56:01 作者: rapoo

String初始化问题
String k = "abc ";
String o = "a ";
String p = "bc ";
String m = "a " + "bc ";
String n = o + p;

System.out.println(k == m);
System.out.println(k == n);

运行结果为:
true
false

请前辈解析一下下

[解决办法]
http://community.csdn.net/Expert/topic/5665/5665749.xml?temp=.8930933
[解决办法]
String m = "a " + "bc ";//这个编译器已经清楚知道它的计算结果,所以直接变成m = "abc "

而在字符串常量是共享的,所以k == m

但是String n = o + p;编译器并不肯定它的计算结果,所以它不会优化,所以等同于
n = new StringBuffer().append(o).append(p).toString();


所以 k != n

读书人网 >J2SE开发

热点推荐