什么时候在java(?:)中使用条件运算符而不是if-else语句?
我有一段代码,它使用条件运算符将变量x的值与5进行比较:什么时候在java(?:)中使用条件运算符而不是if-else语句?,java,if-statement,conditional,Java,If Statement,Conditional,我有一段代码,它使用条件运算符将变量x的值与5进行比较: (x >=5 ? x : -x) 与常规if-else语句相比,使用条件运算符有什么好处 是的,它可以在Java中使用;但是请注意,x==“Cheese”不是在Java中比较字符串的正确方法,您需要类似于“Cheese”的东西;但是请注意,x==“Cheese”不是Java中比较字符串的正确方法,您需要类似于“Cheese”的东西。equals(x)是的,可以使用它,但在这种情况下,使用-x毫无意义,因此它取决于当字符串是输入时您
(x >=5 ? x : -x)
与常规if-else语句相比,使用条件运算符有什么好处 是的,它可以在Java中使用;但是请注意,
x==“Cheese”
不是在Java中比较字符串的正确方法,您需要类似于“Cheese”的东西;但是请注意,x==“Cheese”
不是Java中比较字符串的正确方法,您需要类似于“Cheese”的东西。equals(x)
是的,可以使用它,但在这种情况下,使用-x
毫无意义,因此它取决于当字符串是输入时您希望返回什么。您可以这样做:
(“奶酪”。等于(x)?:)
其中X
可以是任何其他类型上的String
。请记住使用“string.equals(x)
,而不是x.equals(“string”)
。这可防止出现NullPointerException
对于基本值,您可以使用=
,但对于对象,您需要使用equals
方法。当您可以在String
上使用==
时,会出现一些边缘情况,但我想它们与您的情况无关,您可以在本主题之外阅读
附言:有些答案谈论的是if-else语句,但这不是问题所在
这可以像if-else一样用于所有帐户吗?例如,你能
将字符串与它进行比较
我很确定,他所说的像if-else
的是指具有类似于if-else
行为的条件运算符,而不是if-else
指令本身。是的,它可以被使用,但在这种情况下,使用-x
毫无意义,所以这取决于当字符串是一个输入时要返回什么。您可以这样做:
(“奶酪”。等于(x)?:)
其中X
可以是任何其他类型上的String
。请记住使用“string.equals(x)
,而不是x.equals(“string”)
。这可防止出现NullPointerException
对于基本值,您可以使用=
,但对于对象,您需要使用equals
方法。当您可以在String
上使用==
时,会出现一些边缘情况,但我想它们与您的情况无关,您可以在本主题之外阅读
附言:有些答案谈论的是if-else语句,但这不是问题所在
这可以像if-else一样用于所有帐户吗?例如,你能
将字符串与它进行比较
我很确定,他所说的像if-else
的是指具有类似于if-else
行为的条件运算符,而不是if-else
指令本身。注意,这是?:
是一个表达式,它返回一个必须使用的值
z = (x >=5 ? x : -x)
Java中的if
构造是而不是一个表达式(有语言在其中),并且不返回值,因此在这个意义上它们是而不是等价的
当if
选项执行赋值时,它们是等效的一个示例:
if("Cheese".equals(x)) {
type = "Dairy";
} else {
type = "Maybe not dairy";
}
这和
type = "Cheese".equals(x) ? "Dairy" : "Maybe not dairy";
您可以将?:
嵌套到任意深度,但实际上不应该这样做-它变得很难读取:
List<String> cheeses = Arrays.asList("Gouda", "Edam");
String x= "Gouda";
String type = cheeses.contains(x) ? "Gouda".equals(x) ? "Yummy Gouda" : "Cheese - but not Gouda" : "Maybe not dairy";
List cheeses=Arrays.asList(“Gouda”、“Edam”);
字符串x=“Gouda”;
字符串类型=奶酪。是否包含(x)?“Gouda”,等于(x)?“美味狗粮”:“奶酪——但不是狗粮”:“也许不是乳制品”;
注意,is?:
是一个表达式-它返回一个必须使用的值
z = (x >=5 ? x : -x)
Java中的if
构造是而不是一个表达式(有语言在其中),并且不返回值,因此在这个意义上它们是而不是等价的
当if
选项执行赋值时,它们是等效的一个示例:
if("Cheese".equals(x)) {
type = "Dairy";
} else {
type = "Maybe not dairy";
}
这和
type = "Cheese".equals(x) ? "Dairy" : "Maybe not dairy";
您可以将?:
嵌套到任意深度,但实际上不应该这样做-它变得很难读取:
List<String> cheeses = Arrays.asList("Gouda", "Edam");
String x= "Gouda";
String type = cheeses.contains(x) ? "Gouda".equals(x) ? "Yummy Gouda" : "Cheese - but not Gouda" : "Maybe not dairy";
List cheeses=Arrays.asList(“Gouda”、“Edam”);
字符串x=“Gouda”;
字符串类型=奶酪。是否包含(x)?“Gouda”,等于(x)?“美味狗粮”:“奶酪——但不是狗粮”:“也许不是乳制品”;
三元运算符不是if else
在每种可能的情况下的等价物。这是因为使用三元运算符的两个可能结果都是返回值(例如,控制台上的简单打印不是返回值,因此不能是三元运算符中的可能结果之一)
听着,你可以用if-else
来做,但是用三元运算符是不可能的:
if (x > 5) {
System.out.println("Statement is true");
else {
System.out.println("Statement is false");
}
x > 5 ? System.out.println("Statement is true") : System.out.println("Statement is false");
您不能使用三元运算符执行此操作:
if (x > 5) {
System.out.println("Statement is true");
else {
System.out.println("Statement is false");
}
x > 5 ? System.out.println("Statement is true") : System.out.println("Statement is false");
当使用三元运算符的两个结果都被视为返回值时,它们就相当于if-else
在每种可能的情况下,三元运算符都不等同于if-else
。这是因为使用三元运算符的两个可能结果都是返回值(例如,控制台上的简单打印不是返回值,因此不能是三元运算符中的可能结果之一)
听着,你可以用if-else
来做,但是用三元运算符是不可能的:
if (x > 5) {
System.out.println("Statement is true");
else {
System.out.println("Statement is false");
}
x > 5 ? System.out.println("Statement is true") : System.out.println("Statement is false");
您不能使用三元运算符执行此操作:
if (x > 5) {
System.out.println("Statement is true");
else {
System.out.println("Statement is false");
}
x > 5 ? System.out.println("Statement is true") : System.out.println("Statement is false");
当使用三元运算符的两个结果都被视为返回值时,它们就相当于if-else
你认为什么是-“SomeString”
?如果x
是字符串(你不应该将字符串与=
进行比较),那么-x
应该是什么?@QBrute你是对的。我的错误。我是upda