问题描述
|
我有以下Java代码:
String p = \"seven\";
String q = \"teen\";
p + q == \"seventeen\";
为什么最后一行返回false
而不是true
?
解决方法
因为您应该使用
equals
方法进行String
比较。 ==
运算符比较对象引用,这些引用对于每个对象都是唯一的。在将对象与其自身进行比较时,对于==
比较,您只会得到true
。
试试(p + q).equals(\"seventeen\");
注意,java中的“ 4”比较是区分大小写的,因此您可能还想看一看“ 10”方法。
,(p + q).intern()== \“十七\”
实习生将从池中返回字符串
,比较Strings
时,必须使用String
方法equals
或equalsIgnoreCase
,否则将比较对象。由于p
+q
与\"seventeen\"
是不同的对象,因此您的结果将为假。
,因为==是引用相等而不是逻辑相等。字符串是不可变的,因此您将获得新的字符串,该字符串将不会在内存中位于同一位置。尝试:
String p = \"seven\";
String q = \"teen\";
(p + q).equals(\"seventeen\");