-1

三元分配是否可以使用简写类型的三元分配表达没有“其他”表达

boolean x = false; 
// ... code ... 
a = x ? b : a; // Assigning a to a is pointless 
a += x ? 1 : 0; // Adding 0 to a is pointless 

我想沿着

a = x ? b; // Assign b to a if x is true 
a += x ? 1; // Add 1 to a if x is true 

不是东西线它可以节省大量的输入,我只是好奇如果这样的事情存在。我刚刚在PHP 7中发现了null coalesce operator,它有类似的作用。对我来说,看起来清爽多了比

if(x) a = b; 
if(x) a += 1; 

因为这些作业,并使用三元表达式从左至右读取时看起来更自然。假设的重复问题不是关于具体的任务,在我看来这是三元运算符的特殊用例。

+3

使用'if'声明。这就是Java提供它的原因。 – nbro

+0

顺便说一下,Java是一种务实的语言,它试图避免用户的别名和多种选择;相反,它专注于简单性(即使看到这个评论的人看起来可能很奇怪,但这是我在使用Java几年后对Java的感觉)。 – nbro

+0

阻止你在一个Java类中包含同一行并且自己检查它不能编译? – walen

回答

0

不幸的是,这是而不是由Java支持。

从Oracle官方文档:

另一个条件运算符是:?,它可以被看作是速记的if-then-else语句(在本节课的流程控制语句中讨论) 。
该运算符也称为三元运算符,因为它使用三个操作数。
在以下示例中,应该将此运算符理解为:“如果someCondition为true,则将value1的值分配给result,否则将value2的值分配给result。”

下面的程序,ConditionalDemo2,测试:操作:

class ConditionalDemo2 { 

    public static void main(String[] args){ 
     int value1 = 1; 
     int value2 = 2; 
     int result; 
     boolean someCondition = true; 
     result = someCondition ? value1 : value2; 

     System.out.println(result); 
    } 
} 

因为someCondition是真实的,这个程序打印 “1” 到屏幕上。
如果使代码更具可读性,请使用?:运算符而不是if-then-else语句;
例如,当表达式紧凑且没有副作用(例如赋值)时。

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html