如何生成多个或';在Java中,s在一个更简洁的语句中
我有一个if语句,大致如下:如何生成多个或';在Java中,s在一个更简洁的语句中,java,if-statement,Java,If Statement,我有一个if语句,大致如下: if (characterStrings[occupation] == "bar-owner" || characterStrings[occupation] == "barrista" || characterStrings[occupation] == "shop owner") 如何在java中使这个和类似的or语句更加简洁 非常感谢,我在任何地方都找不到这方面的文档,使用而不是多个或(|) 从现在起,开关还支持字符串 小例子 switch(characte
if (characterStrings[occupation] == "bar-owner" || characterStrings[occupation] == "barrista" || characterStrings[occupation] == "shop owner")
如何在java中使这个和类似的or语句更加简洁
非常感谢,我在任何地方都找不到这方面的文档,使用而不是多个或(|
)
从现在起,开关还支持字符串
小例子
switch(characterStrings[occupation])
{
case "bar-owner": //some codes for bar-owner
break;
case "barrista":// codes for barrista
break;
}
使用而不是多个或(|
)
从现在起,开关还支持字符串
小例子
switch(characterStrings[occupation])
{
case "bar-owner": //some codes for bar-owner
break;
case "barrista":// codes for barrista
break;
}
如果你必须检查所有这些条件,那么你必须检查所有这些条件。但是,开关块比较干净,有许多情况需要检查
还要注意,您正在将字符串与
==
进行比较。不要。使用equals()
方法。如果必须检查所有这些条件,则必须检查所有这些条件。但是,开关块比较干净,有许多情况需要检查
还要注意,您正在将字符串与
==
进行比较。不要。使用equals()
方法。您可以使用以下代码:
if (Arrays.asList("bar-owner", "barrista", "shop owner").contains(characterStrings[occupation]))
这将检查
字符串[职业]
是否为酒吧老板
、酒吧老板
或店主
,您可以使用以下代码:
if (Arrays.asList("bar-owner", "barrista", "shop owner").contains(characterStrings[occupation]))
这将检查
字符串[职业]
是否是酒吧老板
、酒吧老板
或店主
中的任何一个,如果您比较字符串,请使用equals()
方法而不是=
。
如果要比较字符串,可以使用使用
equals()
方法,而不是=
。
您可以先使用,不应使用
=
比较字符串。这几乎总是一个错误。例如:
if ("hello" == new String("hello")) {
System.out.println("Something impossible just happened!!");
}
(这不是bug的唯一情况是比较字符串文本和/或手动“插入”字符串对象。即使如此,这也是一个相当可疑的优化,因为它的正确性取决于您从不使用“正常”字符串。)
在Java6和更早版本中,无法进行比原始版本更简洁、更高效的字符串
equals
比较序列
使用数组.asList
,如中所示
if (Arrays.asList("bar-owner", "barrista",
"shop owner").contains(characterStrings[occupation])) {
// statements
}
更简洁,但效率也明显降低:
调用必须在内部迭代list对象的元素,使用contains
测试每个元素equals
调用涉及为varargs参数分配和初始化asList
,以及分配和初始化调用返回的String[]
对象。(您可以潜在地“提升”它以提高性能,但这会降低简洁性…)List
switch (characterStrings[occupation]) {
case "bar-owner": case "barrista": case "shop owner":
// statements
break;
}
更简洁,也可以更高效。Java编译器可能会将其转换为隐藏的静态
HashSet
或等效文件中的查找。将出现一个“收支平衡点”,其中N序列的测试成本大于哈希表查找的成本。首先,不应使用=
比较字符串。这几乎总是一个错误。例如:
if ("hello" == new String("hello")) {
System.out.println("Something impossible just happened!!");
}
(这不是bug的唯一情况是比较字符串文本和/或手动“插入”字符串对象。即使如此,这也是一个相当可疑的优化,因为它的正确性取决于您从不使用“正常”字符串。)
在Java6和更早版本中,无法进行比原始版本更简洁、更高效的字符串equals
比较序列
使用数组.asList
,如中所示
if (Arrays.asList("bar-owner", "barrista",
"shop owner").contains(characterStrings[occupation])) {
// statements
}
更简洁,但效率也明显降低:
contains
调用必须在内部迭代list对象的元素,使用equals
测试每个元素
asList
调用涉及为varargs参数分配和初始化String[]
,以及分配和初始化调用返回的List
对象。(您可以潜在地“提升”它以提高性能,但这会降低简洁性…)
在Java 7中:
switch (characterStrings[occupation]) {
case "bar-owner": case "barrista": case "shop owner":
// statements
break;
}
更简洁,也可以更高效。Java编译器可能会将其转换为隐藏的静态HashSet
或等效文件中的查找。这将是一个“收支平衡”点,其中N等于
测试序列的成本大于哈希表查找的成本。非常感谢!正是我想要的。非常感谢!正是我想要的。谢谢你的建议也很有帮助,虽然不是我想要的。@user2752347我已经给出了一个小例子,请检查这个。这回答了一个完全不同的问题。他没有试图单独处理每个案例,而是一起处理,因此if语句包含了所有案例。@leigero使用多个or语句会降低效率,这就是为什么java提供了switch,而不是if-else。如果你注意到这个问题是关于一个带有多个参数的If语句。假设他试图说“如果对象是酒吧老板、律师或商店老板,那么就扇他们一耳光。”你的开关盒将有3个“扇他们一耳光”命令,这几乎没有什么效率。谢谢你的建议,这也很有帮助,尽管不是我想要的。@user2752347我给出了一个小例子,检查这个答案完全不同。他没有试图单独处理每个案例,而是一起处理,因此if语句包含了所有案例。@leigero使用多个or语句会降低效率,这就是为什么java提供了switch,而不是if-else。如果你注意到这个问题是关于一个带有多个参数的If语句。