由于Java中运算符优先级的原因,我感到很困惑.我读的教程以前,时间长,具有比OR,这是在提供的答案证实了更高的优先级问题.但是,我目前正在使用"Sun认证的Java 6程序员学习指南"来学习Java.本书包含以下示例:
int y = 5;
int x = 2;
if ((x > 3) && (y < 2) | doStuff()) {
System.out.println("true");
}
Run Code Online (Sandbox Code Playgroud)
我正在复制并引用编译器如何处理上述代码的解释:
If (x > 3)istrue,或者是(y < 2)或者结果doStuff()是true,然后打印"true".由于短路&&,表达式被评估为好像周围有括号(y < 2) | doStuff().换句话说,它被评估为单个表达式之前&&和之后的单个表达式&&.
这意味着虽然|优先级高于&&.是不是因为使用了"非短路OR"而不是短路OR?什么是真的?
| 归档时间: |
|
| 查看次数: |
1630 次 |
| 最近记录: |