在Java中使用三元运算符进行流控制

时间:2015-04-20 09:31:32

标签: java ternary-operator

可以使用?:(三元)运算符代替 if-then-else 语句进行赋值,但也可以某种方式用于流量控制?例如,

flag ? method1 : method2;

3 个答案:

答案 0 :(得分:5)

是,

  1. 您必须保存结果;你不能单独拥有一个表达式(在Java中;你可以用其他语言)。

  2. 这些方法不能有void返回类型。

  3. 条件表达式的类型取决于您使用的方法的返回类型。如果两者都返回布尔值,则类型为boolean;如果两者都是数字,则结果为数字;否则,结果将是参考类型(例如,像Object)。

    E.g:

    x = flag ? method1() : method2();
    

    更多JLS §15.25 - Conditional Operator ? :

    如果能够以这种方式使用条件对您很重要(个人而言,我坚持使用流控制语句),您可以定义一个如下所示的实用方法:

    static void consume(Object o) {
    }
    

    然后:

    consume(flag ? method1() : method2());
    

答案 1 :(得分:0)

可能已经回答了。但是,如果两个方法都返回相同的类型,我们可以在三元操作中使用这些方法。示例如下。

public static void main(String[] args) {
        boolean b = true;
        int i = b ? getThis() : getThat();
    }

    public static int getThis() {
        return 1;
    }

    public static int getThat() {
        return 2;
    }

答案 2 :(得分:0)

您可以使用它,但它应该相同(可能在转换后)返回类型,请参阅JLS 15.25. Conditional Operator ? :了解更多详情:

  

此转换可能包括装箱或拆箱转换(§5.1.7,§5.1.8)