黑马程序员技术交流社区

标题: String??? [打印本页]

作者: 韩秀山    时间: 2013-5-15 11:12
标题: String???
按照Java的重点介绍==是比较两个对象是否相等,且Java中对String的赋值都是产生一个新的对象,原有的字符串变成了垃圾内存。但我用下面的类测试了一下,却得到了两种截然不同的结果,不知何解?     

class   StringTest     {   
  public   static   void   main(String   args[])     {   
  String   str1="Hellow   World";   
  String   str2="Hellow   World";   
  String   str3=new   String("Hellow   World");  
  String   str4=new   String("Hellow   World");   
    if   (str1==str2)     {   
           System.out.println("str1==str2");   
     } else{   
           System.out.println("str1!=str2");  
    }
    if   (str3==str4)     {   
          System.out.println("str3==str4");   
    } else{   
         System.out.println("str3!=str4");   
    }   

}   
  输出结果为     str1==str2     str3!=str4   
  按照Java的解释,得到的结果应该都是不等于啊?


作者: 崔宏奎    时间: 2013-5-15 11:24
汗。。。JAVA。。。
不了解JAVA。String是个类,请确认你比较的是(类引用是否相等)(类存储的值是否相等)
作者: 韩秀山    时间: 2013-5-15 11:27
崔宏奎 发表于 2013-5-15 11:24
汗。。。JAVA。。。
不了解JAVA。String是个类,请确认你比较的是(类引用是否相等)(类存储的值是否相等 ...

new String()。是在比较引用,String s="" 是在比较值。我可以这么理解吗??
作者: 崔宏奎    时间: 2013-5-15 11:33
韩秀山 发表于 2013-5-15 11:27
new String()。是在比较引用,String s="" 是在比较值。我可以这么理解吗??

真心不清楚JAVA。可能要看一下string类型的声明啦~~

C#中是这样的:
1.比较引用:使用object的静态方法object.ReferenceEquals()


2.比较值:使用实例的Equals()方法




作者: 崔宏奎    时间: 2013-5-15 11:35
string 类型会重载'=='运算符






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2