public static void main(String[] args) {
String s1=new String("abc");
String s2="abc";//放入String池里
String s3=new String("abc");
System.out.println(s1==s2);//false
System.out.println(s1==s3);//false
System.out.println(s3==s2);//false
System.out.println(s1==s1.intern());//s1.intern()到String池里找,而s1是在堆中所以返回false
System.out.println(s2==s2.intern());//true
System.out.println(s1.intern()==s3.intern());//两个字符串同时到String里查找,返回true
//以下三个都放到String池
String hello="hello";
String hel="hel";
String lo="lo";
System.out.println(hello=="hel"+"lo");//字符串相加以后,会到String池里找,有不产生,所以返回true
System.out.println(hello=="hello");//直接到String池里找,返回true
System.out.println(hello=="hel"+lo);//字符串加一个引用,将产生一个新的对象,所以返回false
System.out.println(hello==(hel+lo));//类似上面,返回false
System.out.println(hello==(hel+lo).intern());//产生新的对象,但是有intern()方法,将到String池中
}