-2

是否可以对类型的三元赋值表达式使用简写

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 运算符,它做了类似的事情。对我来说,它看起来比

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

因为这些是赋值,所以从左到右阅读时使用三元表达式看起来更自然。假定的重复问题与分配无关,在我看来,这是三元运算符的特殊用例。

4

1 回答 1

0

不幸的是,Java支持这一点。

来自官方 oracle 文档:

另一个条件运算符是 ?:,它可以被认为是 if-then-else 语句的简写(在本课的控制流语句部分讨论)。
该运算符也称为三元运算符,因为它使用三个操作数。
在以下示例中,此运算符应读作:“如果 someCondition 为真,则将 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

于 2017-02-20T14:28:35.187 回答