【发布时间】:2010-10-06 14:48:01
【问题描述】:
我有一个关于将字符串与 Java 中的空字符串进行比较的问题。如果我将字符串与空字符串与== 或equals 进行比较,是否有区别?例如:
String s1 = "hi";
if (s1 == "")
或
if (s1.equals(""))
我知道应该将字符串(和一般的对象)与equals 进行比较,而不是==,但我想知道它对于空字符串是否重要。
【问题讨论】:
-
比较长度不是更好吗?我觉得长度比较比字符串比较更优化
-
@Ravisha 在内部,
String.java'sequals方法有几个优化:1:参考==比较,2:instanceof String在转换之前检查,并在最后逐字符比较字符串之前比较 3: 长度值。所以回答你的问题,是的,长度比较是有效的,但你的代码应该依赖 String.equals 而不是重新发明它的任何*。 -
@Patrick M 。如果这里的目的是检查空字符串,我更喜欢比较长度。而不是比较。
-
@Ravisha 我同意你的观点。问题及其答案最终集中在字符串比较的规范形式上,当其中一个字符串可能为空时,它具有特定的“正确”方式。但是从检测字符串是否为空的更广泛的角度来看,有专门定义的
.isEmpty()方法“当且仅当length()为0 时返回true”。但是你仍然需要做一个空检查,这就是为什么我更喜欢 C# 的public static bool IsNullOrEmpty。
标签: java string comparison string-comparison