Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么时候在java(?:)中使用条件运算符而不是if-else语句?_Java_If Statement_Conditional - Fatal编程技术网

什么时候在java(?:)中使用条件运算符而不是if-else语句?

什么时候在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 >=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