使用equals方法可以比较两个字符串是否相等,因为String重写了Object的equals方法,而==运算符比较两个对象引用是否相同的实例。
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????
}
}
大惑不解中。

解决方案 »

  1.   

    额,google一下字符串池吧……
      

  2.   

    String s2 = "hello";
    执行这个的时候会先在字符串池中寻找有没有"hello"这个字符串,有的话则直接指向那个地址,这里就直接指向了s1的地址String s2 = new String("hello");
    这个则不管有没有,直接开辟空间
      

  3.   

    String s1="hello"; 声明一个String类型的 变量String s2 = new String("hello");是声明一个String类型的对象String s1="hello"; s1是放在内存常量区String s2 = new String("hello");s2是放在内存堆空间里 
      

  4.   

    ==比较的是地址 equals方法比较的值
      

  5.   

    对的,==比较地址,equal比较值
      

  6.   

    因为equals 比较的值是否相同 是因为Stirng 覆写了Object的equals方法 
    而 == 比较的是引用指向的内存地址 
    new Stirng(“hello”)是创建了一个实例 指的内存地址不一致 所以返回 false
    建议去看看Stirng 的源代码 了解了解 
      

  7.   

    因为每个月都有新的程序员啊!equals是比较对象值,==是比较对象的引用地址!一般都是用equals的比较多。