新手的一个小问题

wopabe 2014-08-07 11:48:37
第一种情况:
String s1 = "Hello";
String s2 = "Hello";

System.out.println(s1 == s2);

第二种情况:
String s1 = new String("Hello");
String s2 = new String("Hello");

System.out.println(s1 == s2);

第一种结果是true,第二种结果是false。
我看了半天,没弄明白为什么?
判断相等的依据是什么?是比较字符串本身还是字符串的引用?
...全文
180 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
-阿克蒙德- 2014-08-07
  • 打赏
  • 举报
回复
楼上正解,结贴拿分
小灯光环 2014-08-07
  • 打赏
  • 举报
回复
肯定是比较引用,比较内容用equals。 第一种 两个Hello在常量池对应的同一个引用。 第二种 因为new了,所以分配了新的内存地址,所以不相等。 大概是这样,仅供参考。
gaofuqi 2014-08-07
  • 打赏
  • 举报
回复
基本是月经贴了。
豫让_______ 2014-08-07
  • 打赏
  • 举报
回复
应该能搜索到答案的,论坛很多帖子讨论过这个。
tony4geek 2014-08-07
  • 打赏
  • 举报
回复
这个老问题了。网上很多看看
疏可跑马 2014-08-07
  • 打赏
  • 举报
回复
楼上正解,结贴拿分。
zzkzsmj 2014-08-07
  • 打赏
  • 举报
回复
==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。 equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。 ==比较的是2个对象的地址,而equals比较的是2个对象的内容。

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧