本帖最后由 Super_Class 于 2013-5-17 16:36 编辑
String s1 = "abc"; //创建一个字符串对象在常量池中
String s2 = "abc"; 这里创建的时候,(没有用new,不会在堆内存中),到常量池中找这个对象。 相当于 s2 = s1; System.out.println(s1.equals(s2)); //true
System.out.println(s1==s2); //true 这里相等时因为常量池中已经有了abc这样一个对象
String s3 = new String ("abc");//在堆内存中创建一个字符串对象
String s4 = new String ("abc");
System.out.println(s2==s3); //false
System.out.println(s3.equals(s4)); //true String类重写了equals方法
System.out.println(s1==s3); //false // 比较的是地址。一个在堆内存,一个在常量池中。肯定不一样
System.out.println(s1.equals(s3)); //true String类重写了equals方法,就变成了比较内容了
|