【发布时间】:2013-06-03 12:43:40
【问题描述】:
我有以下 Java 代码:
String p = "seven";
String q = "teen";
p + q == "seventeen";
为什么最后一行返回false 而不是true?
【问题讨论】:
标签: java
我有以下 Java 代码:
String p = "seven";
String q = "teen";
p + q == "seventeen";
为什么最后一行返回false 而不是true?
【问题讨论】:
标签: java
因为您应该使用equals 方法进行String 比较。 == 运算符比较对象引用,每个对象的引用都是唯一的。将对象与自身进行比较时,您只会得到 true 用于 == 比较。
试试(p + q).equals("seventeen");
注意,Java 中的Stringcomparison 区分大小写,因此您可能还想看看equalsIgnoreCase 方法。
【讨论】:
(p + q).intern() == “十七岁”
intern 将从池中返回字符串
【讨论】:
比较Strings时,必须使用String方法equals或equalsIgnoreCase,否则是在比较对象。由于p + q 与"seventeen" 是不同的对象,因此您的结果将是错误的。
【讨论】:
因为 == 是引用相等而不是逻辑相等。字符串是不可变的,因此您将获得新的字符串,它不会在内存中的相同位置。试试:
String p = "seven";
String q = "teen";
(p + q).equals("seventeen");
【讨论】: