我知道这是一个非常基本的问题,但我一直在努力寻找使我的代码尽可能简洁明了的方法。有没有办法在单个 if()
语句中比较三个或更多字符串的相等性?我目前正在使用 &&
运算符来逐步比较每个字符串。然而,正如您所想象的,在长变量名和被调用的方法之间,这些 if()
语句很快就会变得非常困惑。此外,我计划拥有未知数量的这些字符串,并希望避免复杂的 for
循环,其中嵌套了困惑的 if()
。这是我的代码目前的样子:
String a = new String("a");
String b = new String("b");
String c = new String("c");
if(a.equals(b) && b.equals(c)) {
doSomething();
}
有没有一种方法或某种集合可以让我更像这样比较这些值:
if(a.equals(b).equals(c)) {
doSomething();
}
没有像这样链接equals()
命令的简单方法。为了能够以这种方式链接它们,equals()
必须返回对 String 本身的引用。然而,它不能再返回表示比较结果的 boolean 值。
此外,我认为像您的第一个示例那样分别比较三个字符串不是特别有问题。确保您的代码格式正确,这样即使对于较长的变量名,代码也易于理解:
if(myValueAWithALongName.equals(myValueBWithALongName) &&
myValueBWithALongName.equals(myValueCWithALongName) &&
myValueCWithALongName.equals(myValueDWithALongName) &&
... ) {
或者,您可以使用此线程中提出的其他解决方案之一,将您的值包装到一个集合中并编写一个辅助方法。但是请注意,这可能会对内存使用、性能和可读性产生负面影响。
附带说明一下,您永远不应该使用构造函数 new String()
创建字符串。只需将字符串文字直接分配给您的变量:
String a = "a";