public static void main(String[] args) {
// TODO Auto-generated method stub

String s = "abcd";
String str = new String(s);

if(s == str){
System.out.println("==");
}
if(s.equals(str)){
System.out.println("equals");
} }我试了输出结果是equals,为什么呢?
怎么没有==呢?

解决方案 »

  1.   

    s 和str的内存地址不一样
    ==比较两个对象引用的内存地址
    对于string ,equals比较两个字符串的值
      

  2.   

    String s = "abcd"; 
    其实是: String s =new String("abcd");
    和       String str = new String(s); 
    new了两个对象
    s和str就是对两个对象的引用  地址肯定不一样
      

  3.   

    equals比较内容,==比较对象地址,当然不一样了,这样的讨论以前有很多了。
      

  4.   

    如果想输出 “==”
    String s = "abcd"; 
    String str = "abcd";
    原因ls的都是正解。
      

  5.   

    s只是一个字符串,而str却是一个字符串对象,
    equals比较内容,==比较对象地址,
    而两者只是内容相同,但是其内容地址并不一样,所以才会出向那种结果!
      

  6.   

    又见Equals,不过挺好的,总能温故而知新
      

  7.   

    楼主肯定是一开始就用编译器写java………………
    怀念用记事本写java的日子啊…………
    不过现在我用记事本也写不了几句了,呵呵。
      

  8.   

    str 和 s 的内存地址不一致。用==好比较古会不等