Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中使用三元运算符进行流量控制_Java_Ternary Operator - Fatal编程技术网

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

在Java中使用三元运算符进行流量控制,java,ternary-operator,Java,Ternary Operator,?:(三元)运算符可以代替if-then-else语句用于赋值,但也可以以某种方式用于流控制?比如说, flag ? method1 : method2; 是的,但是: 你必须保存结果;您不能只拥有一个表达式(在Java中;您可以使用其他一些语言) 这些方法不能有void返回类型 条件表达式的类型取决于所使用方法的返回类型。如果两者都返回布尔值,则类型为布尔值;如果两者都是数字,则结果将是数字;否则,结果将是引用类型(例如,像对象) 例如: 更多 如果能够以这种方式使用条件语句对您很重要(我个

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

flag ? method1 : method2;

是的,但是

  • 你必须保存结果;您不能只拥有一个表达式(在Java中;您可以使用其他一些语言)

  • 这些方法不能有
    void
    返回类型

  • 条件表达式的类型取决于所使用方法的返回类型。如果两者都返回布尔值,则类型为布尔值;如果两者都是数字,则结果将是数字;否则,结果将是引用类型(例如,像
    对象

    例如:

    更多

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

    static void consume(Object o) {
    }
    
    然后:

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

    可能已经回答了。但是,如果两种方法返回相同的类型,我们可以在三值运算中使用这些方法。下面给出的例子

    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;
        }
    

    您可以使用它,但它应该是相同的(可能在转换后)返回类型有关详细信息,请参阅:

    该转换可能包括装箱或拆箱转换(§5.1.7、§5.1.8)


    你试过了吗?发生什么事了?是的。肯定用这种方式调用方法是否有特殊问题?是的,可以。你能补充一些具体的例子吗?:)只是学究气:
    ?:
    是三元运算符(接受三个操作数的运算符)。它的专有名称是条件运算符。它恰好是Java目前唯一的三元运算符,但是…并非所有的非void类型都兼容(将
    Object
    用作常见的“supertype”)。如果您的两个方法确实不需要返回任何内容,您可以声明它们返回
    void
    对象,我希望人们会意识到这意味着该方法不会返回任何有用的东西——然后你只需扑通一声
    返回null在每个代码的末尾。但是,我不希望在这种情况下首先使用三元。
    
    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;
        }