由于我的原因,&&其优先级高于||以下代码
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 + " ");
}
Run Code Online (Sandbox Code Playgroud)
这个代码的输出是true false false,因为有括号我假设true变量a,b和c 的赋值将在执行表达式之前首先执行,&&并且||我的理解就像(a = true)|| ((b = true)&&(c = true))但是根据输出,似乎在分配true给变量a后,左侧||已经执行,因此不执行其余的代码.这是否意味着||已经覆盖了&&自左侧执行以来?
是的,&&优先级高于||.这意味着你的陈述
boolean d = (a = true) || (b = true) && (c = true);
Run Code Online (Sandbox Code Playgroud)
相当于
boolean d = (a = true) || ((b = true) && (c = true));
Run Code Online (Sandbox Code Playgroud)
这并不意味着||将首先评估右侧.事情从左到右评估.由于||短路和a = true评估true,它不需要评估右侧||.
其余的类变量初始化为默认值false(对于boolean值).
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |