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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 奋斗的小耗子 于 2014-8-24 22:16 编辑

废话不多说,直接上
  1. import java.io.File;
  2. class Question
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 System.out.println("abc的哈希值:"+"abc".hashCode());
  7.                 System.out.println("--------------------------------------------");
  8. /*只是File路径不一样而已,其他的都一样,很简单吧*/
  9.                 File f1 = new File("abc");
  10.                 String s1 = f1.getName();
  11.                 System.out.println("s1="+s1+"  s1的哈希值: "+s1.hashCode());
  12.                 System.out.println("s1 == abc ? --> "+(s1 == "abc"));
  13.                 System.out.println("s1 equals abc ? --> "+(s1.equals("abc")));

  14.                 System.out.println("--------------------------------------------");
  15. /*这个例子简单吧*/
  16.                 File f2 = new File("D:\\abc");
  17.                 String s2 = f2.getName();
  18.                 System.out.println("s2="+s2+"  s2的哈希值: "+s2.hashCode());
  19.                 System.out.println("s2 == abc ? --> "+(s2 == "abc"));
  20.                 System.out.println("s2 equals abc ? --> "+(s2.equals("abc")));
  21.         }
  22. }
复制代码
运行结果:


可知,s1与“abc”是同一个对象,s2与“abc”不是同一个对象,为什么会这样呢?

4 个回复

正序浏览
lylHAHA 发表于 2014-8-25 09:19
之前老师有讲过:equals比较的是内容,==比较的是地址,所以对照你的题,应该是这样的,因为我是新手,不太 ...

你说的很正确
回复 使用道具 举报
八零、玖羚 发表于 2014-8-25 00:43
曾几何时,也有这样的疑问,现在同求高手指教

看来你也被虐过啊:handshake
回复 使用道具 举报
之前老师有讲过:equals比较的是内容,==比较的是地址,所以对照你的题,应该是这样的,因为我是新手,不太懂如何讲的详细些,希望可以帮到你;共同期待大神来解答吧,,
回复 使用道具 举报
曾几何时,也有这样的疑问,现在同求高手指教
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马