是否可以使用类型的三元赋值表达式的简写
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;
因为这些是作业,所以当从左到右阅读时,使用三元表达看起来更自然。假设的重复问题不是专门针对分配的,我认为这是三元运算符的特殊用例。
答案 0 :(得分:0)
不幸的是,Java支持不。
来自官方oracle doc:
另一个条件运算符是?:,可以被认为是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);
}
}
因为某些条件是真的,所以此程序会打印" 1"到屏幕。
如果它使代码更具可读性,请使用?:运算符而不是if-then-else语句;
例如,当表达式紧凑且没有副作用(例如赋值)时。
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html