读书人

String池跟==

发布时间: 2012-11-09 10:18:48 作者: rapoo

String池和==

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);//falseSystem.out.println(s1==s3);//falseSystem.out.println(s3==s2);//falseSystem.out.println(s1==s1.intern());//s1.intern()到String池里找,而s1是在堆中所以返回falseSystem.out.println(s2==s2.intern());//trueSystem.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池里找,有不产生,所以返回trueSystem.out.println(hello=="hello");//直接到String池里找,返回trueSystem.out.println(hello=="hel"+lo);//字符串加一个引用,将产生一个新的对象,所以返回falseSystem.out.println(hello==(hel+lo));//类似上面,返回falseSystem.out.println(hello==(hel+lo).intern());//产生新的对象,但是有intern()方法,将到String池中}

?

读书人网 >其他相关

热点推荐