Mon*_*ica 3 java conditional boolean
我正在攻读OCA Java SE7助理考试.我的一个练习考试题目有以下代码片段:
boolean flag = true;
if (flag = false) {
System.out.println("1");
}
else if (flag) {
System.out.println("2");
}
else if (!flag) {
System.out.println("3");
}
else
System.out.println("4");
Run Code Online (Sandbox Code Playgroud)
注意if (flag = false)条件.问题是这个片段的输出是什么.所有数字都作为答案选择提供,然后有一个选择说"编译器错误",这是我选择的.我错了.输出将是3.我在Eclipse中测试,它也返回3.
然后我测试了
int x = 3;
int y = 1;
if (x = y) {
// whatever
}
Run Code Online (Sandbox Code Playgroud)
当然,有一个错误.
为什么可以flag从内部更改true为false内部if-statement,但x的值在类似的情况下无法更改?是因为flag是布尔类型而x是类型int吗?我用Google搜索,但无法找到任何东西.
因为赋值x = y不等于boolean评价.
if期望操作的结果给出true或false返回.
像if ((x = y) == y)工作一样(评估会返回true)