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

时间:2018-02-24 12:44:19

标签: java if-statement conditional

我有一段代码使用条件运算符将变量x的值与5进行比较:

(x >=5 ? x : -x)

在常规if else语句中使用条件运算符有什么好处?

4 个答案:

答案 0 :(得分:3)

请注意,//Custom event that is raised when the application is starting private event EventHandler Starting = delegate { }; //Application developers override this method //to perform actions when the application starts. protected override void OnStart() { //subscribe to event Starting += onStarting; //raise event Starting(this, EventArgs.Empty); } private async void onStarting(object sender, EventArgs args) { //unsubscribe from event Starting -= onStarting; //perform non-blocking actions await sendHttpRequestAsync(); } private async Task sendHttpRequestAsync() { await ... } 表达式 - 它返回一个必须消耗的值

?:

Java中的z = (x >=5 ? x : -x) 构造一个表达式(有语言)并且不返回值,所以在这个意义上它们相当于。

它们等效的示例是if选项执行赋值时:

if

这与

相同
if("Cheese".equals(x)) {
    type = "Dairy";
} else {
    type = "Maybe not dairy";
}

你可以将type = "Cheese".equals(x) ? "Dairy" : "Maybe not dairy"; 嵌套到任意深度,但实际上不应该 - 它变得非常难以阅读:

?:

答案 1 :(得分:1)

每个可能的情况下,三元运算符不等同于if-else。这是因为使用三元运算符的两种可能结果都是 return 值(例如,对控制台的简单打印不是返回值,因此它不能成为三元运算符中的可能结果之一)。

看,您可以使用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-else

答案 2 :(得分:0)

是的,它可以使用,但在这种情况下使用-x当然没有意义,所以它取决于当String是输入时你想要返回什么。你可以这样做:

("Cheese".equals(x) ? <some object of expected type X> : <some other object of expected type X>)

其中任何其他类型的X可以是String。请记住"string".equals(x)代替x.equals("string")。这会阻止NullPointerException

对于原始值,您可以使用==,但对于对象,您需要使用equals方法。在==上使用String时会出现一些边缘情况,但我猜这些情况与您的情况无关,您可以在此主题之外阅读。

PS:有些答案谈论if else语句,但这不是什么问题。

  

这可以像所有帐户上的if else一样使用吗?例如,你能吗?   比较字符串吗?

我很确定通过说like an if else他的意思是条件运算符,它具有if else行为,而不是if else指令本身。

答案 3 :(得分:-1)

是的,它可以在Java中使用;但请注意,x =="Cheese"不是比较Java中字符串的正确方法,您需要类似"Cheese".equals(x)的内容。