首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

SCJP考试题一道:按位异或 运算符 与boolean值

2013-12-11 
SCJP考题一道:按位异或 运算符 与boolean值Given:3. public class Spock {4. public static void main(Str

SCJP考题一道:按位异或 运算符 与boolean值

Given:
3. public class Spock {
4. public static void main(String[] args) {
5. Long tail = 2000L;
6. Long distance = 1999L;
7. Long story = 1000L;
8. if((tail > distance) ^ ((story * 2) == tail))
9. System.out.print("1");
10. if((distance + 1 != tail) ^ ((story * 2) == distance))
11. System.out.print("2");
12. }
13. }

What is the result?
A. 1
B. 2
C. 12
D. Compilation fails.
E. No output is produced.
F. An exception is thrown at runtime.

如果单独输出:System.out.println((tail>distance)^((story*2)==distance));结果是true。
为何在第9行中不输出1呢?
请高手多指教。这点很迷惑的,不是很懂。非常感谢。
[解决办法]
tail > distance这得到的是布尔量,和C不同,JAVA这个就是一个false或true的值,不能像C那样转成1,0那样进行运算,所以第一个if怎样都是false的。不能进行运算为什么还能得到false而不报错,我就不知道了。
[解决办法]
直接忽略1F

true ^ true 等价于 1 ^ 1,两边相同,得到0,false
[解决办法]
^是异或运算符,只有当两端一个为true一个为false,这个表示式true ^ false或者false ^ true才会为true,其他情况为false。

热点排行