加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java三元运算符语法

发布时间:2020-12-15 04:25:04 所属栏目:Java 来源:网络整理
导读:参见英文答案 Ternary operator,syntax error when using assignment????????????????????????????????????4个 我有以下代码.这就是我理解它的方式. 在第一种情况下,三元运算符返回y的值,因为x = 4并且print语句按预期打印5. 在第二种情况下,三元运算符首先
参见英文答案 > Ternary operator,syntax error when using assignment????????????????????????????????????4个
我有以下代码.这就是我理解它的方式.

在第一种情况下,三元运算符返回y的值,因为x = 4并且print语句按预期打印5.

在第二种情况下,三元运算符首先将y的值赋给x,然后返回该值.再次,它按预期打印5.

在第三种情况下,三元运算符在左边的x = y:和x = z在右边:.我希望这与第二种情况非常相似.但是,这个语句甚至没有编译.

任何理解这一点的帮助将非常感激.

public class Test {

    public static void main(String[] args) {
        int x = 4;
        int y = 5;
        int z = -1;

        x = (x == 4) ? y : z;        // compiles and runs fine
        System.out.println(x + " " + y + " " + z);

        x = (x == 4) ? x = y : z;    // compiles and runs fine
        System.out.println(x + " " + y + " " + z);

        x = (x == 4) ? x = y : x = z;  // Does not compile
        System.out.println(x + " " + y + " " + z);
    }
}

解决方法

赋值的优先级低于三元表达式,因此这个表达式:

(x==4)?x=y:x = z;

可以被认为是:

((x==4)?x=y:x) = z;

显然无法编译,因为您无法为不是变量的内容赋值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读