A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 韩秀山 中级黑马   /  2013-5-15 11:12  /  1325 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

按照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的解释,得到的结果应该都是不等于啊?

4 个回复

正序浏览
string 类型会重载'=='运算符

回复 使用道具 举报
韩秀山 发表于 2013-5-15 11:27
new String()。是在比较引用,String s="" 是在比较值。我可以这么理解吗??

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

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


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



回复 使用道具 举报
崔宏奎 发表于 2013-5-15 11:24
汗。。。JAVA。。。
不了解JAVA。String是个类,请确认你比较的是(类引用是否相等)(类存储的值是否相等 ...

new String()。是在比较引用,String s="" 是在比较值。我可以这么理解吗??
回复 使用道具 举报
汗。。。JAVA。。。
不了解JAVA。String是个类,请确认你比较的是(类引用是否相等)(类存储的值是否相等)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马