关于常量池的问题(==的问题)
public class Test2
{
public static void main(String[] args)
{
//常量池里的数据 编译时就确定下来了
String s1 = "疯狂java";
String s2 = "疯狂";
String s3 = "java";
String s4 = "疯狂" + "java";
String s5 = "疯" + "狂" + "java"; //常量池里的字符串
String s6 = s2 + s3; // 不能在编译期间确定下来,不能引用常量池中的字符串。
String s7 = new String("疯狂java");//new了一个新对象。
System.out.println(s1 == s4); //true
System.out.println(s1 == s5); //true
System.out.println(s1 == s6); //flase
System.out.println(s1 == s7); //flase
}
}
不明白 String s6 = s2 + s3 为什么不能在编译期间确定下来。就算不能确定下来,那么运行期间还是用的常量池啊。
所以倒数第二行 求解释。菜鸟献丑了
------解决方案--------------------
因为s2 s3是变量
------解决方案--------------------
http://topic.csdn.net/u/20120607/07/9d3a5948-ca38-4eb9-a4f8-63400b34e13a.html
不多说不解释