【发布时间】:2013-10-13 04:48:17
【问题描述】:
我是 JAVA 编程新手。 我在我的书中读过它
String a="Hello";
String b="Hello";
System.out.println(a==b);
这应该返回 false,因为 a & b 指的是不同的 String 对象实例。
因为赋值运算符比较对象的实例,但我仍然得到 true。
我正在使用 Eclipse IDE。
书中的例子是这样的:
String s = "s";
String sToo = "s";
System.out.println(a == b);
System.out.println(s == sToo);
那段代码为 s == sToo 打印“false”。那是因为 s 和 sToo 是 对 String 对象的不同实例的引用。因此,即使它们具有相同的值,它们也是 在相等运算符的眼中不相等。此外, s == “s” 打印错误,因为字符串文字 产生另一个 String 类的实例。
书名:JAVA 7 for Absolute Beginners
【问题讨论】:
-
不,
a和b的值指的是同一个对象,因为是字符串实习。你确定这本书给出了那个exact的例子吗?另请注意,assignment 运算符根本不执行比较。赋值运算符为=;也许您在考虑相等运算符==? -
要查看它如何返回 false,请尝试
String a=new String("Hello"); String b = "Hello"; -
对不起真的做了类型。正在考虑赋值运算符。真的很抱歉
-
如果书上真的这么说,那就再读一本书。
-
@JonSkeet ya 我在想比较运算符
标签: java object assignment-operator comparison-operators