Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.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 - Fatal编程技术网

| |和&&java之间的优先顺序

| |和&&java之间的优先顺序,java,Java,根据我的理解,&&的优先级高于以下代码中给出的| | static boolean a; static boolean b; static boolean c; public static void main(String[] args) { boolean d = (a = true) || (b = true) && (c = true); System.out.println(a + " " + b + " "

根据我的理解,&&的优先级高于以下代码中给出的| |

    static boolean a;
    static boolean b;
    static boolean c;
    public static void main(String[] args) {
        boolean d = (a = true) || (b = true) && (c = true);
        System.out.println(a + " " + b + " " + c + " ");

    }
这段代码的输出是true-false-false,因为有括号,我假设将true赋值给变量a,b和c将首先在执行&&和| |的表达式之前执行,我的理解类似于a=true | | b=true&&c=true,但根据输出,在将true赋值给变量a之后,| |的左侧似乎已经执行,因此不会执行代码的其余部分。这是否意味着| |已覆盖&&因为左侧已被执行?

是。这意味着你的声明

boolean d = (a = true) || (b = true) && (c = true);
相当于

boolean d = (a = true) || ((b = true) && (c = true));
这并不意味着将首先计算| |的右侧。事物是从左到右评估的。由于| |短路和,因此不需要计算| |的右侧


对于布尔值,其余的类变量初始化为默认值false。

不要混淆优先级和执行顺序。可能的重复项不能作为代码的输出,因为a=true是赋值,不是比较。@计算结果为true的LuiggiMendoza。@SotiriosDelimanolis执行优先是什么意思?那么,您的意思是,优先只是一种对表达式进行分组和计算的方式,而不是因为它具有更高的优先权而首先执行的方式?除非他们明确分组,否则结果会有所不同。对吗?@anathema Preference只是定义了如何将操作数分配给运算符。我认为这条语句有助于我理解您之前所说的,当Java看到&&运算符或| |时,首先计算运算符左侧的表达式@索蒂里奥斯德里曼努利斯酒店