黑马程序员技术交流社区

标题: 你真的了解String吗,谁能解释下面的例子! [打印本页]

作者: 奋斗的小耗子    时间: 2014-8-24 22:14
标题: 你真的了解String吗,谁能解释下面的例子!
本帖最后由 奋斗的小耗子 于 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”不是同一个对象,为什么会这样呢?

作者: 八零、玖羚    时间: 2014-8-25 00:43
曾几何时,也有这样的疑问,现在同求高手指教
作者: lylHAHA    时间: 2014-8-25 09:19
之前老师有讲过:equals比较的是内容,==比较的是地址,所以对照你的题,应该是这样的,因为我是新手,不太懂如何讲的详细些,希望可以帮到你;共同期待大神来解答吧,,
作者: 奋斗的小耗子    时间: 2014-8-25 14:41
八零、玖羚 发表于 2014-8-25 00:43
曾几何时,也有这样的疑问,现在同求高手指教

看来你也被虐过啊:handshake
作者: 奋斗的小耗子    时间: 2014-8-25 14:42
lylHAHA 发表于 2014-8-25 09:19
之前老师有讲过:equals比较的是内容,==比较的是地址,所以对照你的题,应该是这样的,因为我是新手,不太 ...

你说的很正确




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