String xx = "abc";
String yy = "a"+"bc";
System.out.println(xx == yy);
这样输出的是true,那么equals对于String还有意义吗?

解决方案 »

  1.   

    有的 常量池是java对String的优化 不要太去在意就行
      

  2.   

    String yy = "a"+"bc"; //编译器做了优化,这句话的意思就死是String yy = "abc";
      

  3.   

    那么equals对于String还有意义吗?
    当然有意义了,你那个只是碰巧输出true而已
      

  4.   


    碰巧输出 TRUE? 
    求 反例
      

  5.   

    对于String对象,==和equals的讨论没完没了,有什么实际意义呢?
      

  6.   

    自解一下吧,是对象和常量优化的问题。
    java把String 做了常量优化,也就是运算时把它做了处理,以下代码输出就说明问题了
    String a = new String ("a");
    String b = new String ("a");
    System.out.println(a==b);
      

  7.   


                    String xx = "aabc";
    String aa = "aa";
    String bc = "bc";
    String yy;

    System.out.println(System.identityHashCode(xx));
    System.out.println(System.identityHashCode(aa));
    System.out.println(System.identityHashCode(bc));
    yy = aa + bc;
    System.out.println(System.identityHashCode(yy));
    yy = "aa" + "bc";
    System.out.println(System.identityHashCode(yy));1641745
    11077203
    14576877
    12677476
    1641745
    hashCode对对象内部地址进行了整数的转化
      

  8.   

    MARK!MARK!MARK!MARK!MARK!MARK!MARK!MARK!MARK!