记住两点就可以了:
1、==是指两个对象引用变量“指向同一个对象”;2、对于String,如果有new操作或隐含new操作(如xxx.toString()),就会产生“新对象”。

解决方案 »

  1.   

    ==判断两个字符串地址是否相同,equals()判断两个字符串内容是否相同.
      

  2.   

    补充一点,对于字符串常量,比如"a","Hello, world!",Java将只使用一个对象来表示它。例如:String a = "Hello, world!";
    String b = "Hello, world!";这时候a和b指向同一个String对象,所以 a == b 为 true。
      

  3.   

    在《Core Java》volumn I中说得很清楚,千万不要用==来比较字符串,而应该用equals来比较。如果用==来比较,将会遇到不可预料的结果,有时候可能相等,有时候可能不等,如:
    String a = "hello";
    String b = "hello";
    有时候为了节省资源起见,java会将它们放在同一个地方,因此用==比较出来是相等。但有时候java又无法将其放在同一个地方,因为用==比较是不等。总之,结果是不可预料的。说了这么多废话,其实就一句话:java的字符串比较,只能用equals,而不能用==
      

  4.   

    不要用==,用equals,==只会判断地址,因为在oo的思想里,String是一个object,用==只能比较他们的地址,要判断内容一定要用equals.
    顺便提一句,.net里用==是可以的,呵呵.