日期:2014-05-20  浏览次数:20714 次

equals与==的比较
使用equals方法可以比较两个字符串是否相等,因为String重写了Object的equals方法,而==运算符比较两个对象引用是否相同的实例。
Java code

public class TestToString {
    
    public static void main(String[] args) {
        String s1 = "hello";
        String s2 = "hello";//String s2 = new String("hello");改成这样的话,它又是false了。                 System.out.println(s1 == s2);//那我觉得这应该是false呀??为什么它是true????
    }
}





大惑不解中。





------解决方案--------------------
String s2 = "hello";
执行这个的时候会先在字符串池中寻找有没有"hello"这个字符串,有的话则直接指向那个地址,这里就直接指向了s1的地址

String s2 = new String("hello");
这个则不管有没有,直接开辟空间
------解决方案--------------------
String s1="hello"; 声明一个String类型的 变量

String s2 = new String("hello");是声明一个String类型的对象

String s1="hello"; s1是放在内存常量区

String s2 = new String("hello");s2是放在内存堆空间里
------解决方案--------------------
探讨
使用equals方法可以比较两个字符串是否相等,因为String重写了Object的equals方法,而==运算符比较两个对象引用是否相同的实例。Java codepublicclass TestToString {publicstaticvoid main(String[] args) {
String s1="hello";
String s2="hello";//String s2 = new String("hello");改成这样的话,它又是false了。 System.out.println(s1 == s2);//那我觉得这应该是false呀??为什么它是true???? }
}

大惑不解中。