黑马程序员技术交流社区
标题:
这个是为什么,求大神解答
[打印本页]
作者:
曹冬明
时间:
2014-4-15 02:00
标题:
这个是为什么,求大神解答
本帖最后由 曹冬明 于 2014-4-15 08:26 编辑
class StringDemo
{
public static void main(String[] args)
{
String x = "hello";
String y = "world";
String z = "helloworld";
System.out.println(z==x+y);
System.out.println(z==(x+y));
System.out.println((x+y).equals(z));
}
}
复制代码
为什么结果是false
false
true
作者:
榨菜
时间:
2014-4-15 02:21
== 比较的是对象的地址
作者:
陈妙俊
时间:
2014-4-15 08:08
class StringDemo
{
public static void main(String[] args)
{
String x = "hello";
String y = "world";
String z = "helloworld";
System.out.println(z==x+y);
System.out.println(z==(x+y)); //因为是不同的对象,所以为false
System.out.println((x+y).equals(z)); //在字符串中重写了equals方,所以不再比较堆内存地址,而比较它们的内容是否相同, 因为S+y和Z的哦你容相同,所以为ture
}
}
作者:
sheng6699
时间:
2014-4-15 08:15
这写 字符串是"对象"所以比较的地址,地址不同所以false.而第三个通过equals比较的是对象里的内容。所以true
作者:
faith
时间:
2014-4-15 10:16
这里用的是== 地址引用的比较 而 equals是存储地址内容的比较(存取内存中内容的比较) 建议看看老师的笔记
作者:
wyqs92
时间:
2014-4-15 23:33
==表示你比较的对象的地址,而equals比较的是值。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2