常量池:专门用于管理在编译时被确定并被保存在已编译的.class文件中的一些数据,包括:关于类、方法、接口中的常量,还包括字符串常量。
String s1="疯狂java";//s1直接引用常量池中的“疯狂java”
String s2="疯狂";
String s3=“java”;
//s4后面的字符串在编译时就被确定下来,它引用常量池中的“疯狂java”
String s4="疯狂"+“java”;
//s5后面的字符串在编译时不能被确定,不能引用常量池中的
String s5=s2+s3;
//使用new创建的对象,s6引用堆内存中新创建的对象
String s6=new String("疯狂java");
//所以有s1=s4;
//s1!=s5
//s1!=s6
原文:http://www.cnblogs.com/lixiaolun/p/4316963.html