==

String s3 = new String("String");
s3 = "haha";
String s4 = new String("haha");
s4 = "haha";
System.out.println(s3 == s4);应该输出了什么?到底是为什么呢~~~~~

解决方案 »

  1.   

    这个不是很显然的吗?
    s3与s4都指向String Pool中的"haha"
    所以就是true了
      

  2.   

    o,我还纳闷呢,以为s3和s4不是一个对象,应改为false
      

  3.   

    s3与s4不是对象,它们都只是引用变量,它们的值是对象的地址,都是"haha"的地址,所以为true
      

  4.   

    恩是true要是写成
    String s3 = new String("String"); 
    s3 = "haha"; 
    String s4 = new String(s3); System.out.println(s3 == s4); 就是false了
      

  5.   

    把s4="haha"注释了再运行下你就明白了~
      

  6.   

    是true,字符串对象如果引用的值相等,那么它们指向的是同一块内存地址
      

  7.   

    String s3 = new String("String"); 
    s3 = "haha"; 
    String s4 = new String("haha"); 
    s4 = "haha"; 
    System.out.println(s3 == s4);像这样写,不管是==还是equals()都是true,s3和s4不论value还是地址都是一模一样的。主要考点就在String s4 = new String("haha"); 这句!