SCJP考题一道:按位异或 运算符 与boolean值 tail > distance这得到的是布尔量,和C不同,JAVA这个就是一个false或true的值,不能像C那样转成1,0那样进行运算,所以第一个if怎样都是false的。不能进行运算为什么还能得到false而不报错,我就不知道了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 对不起对不起,是我自己测试时输入错了。结果没错的,((tail > distance) ^ ((story * 2) == tail))的值是false;提问的帖子中错输成了:如果单独输出:System.out.println((tail>distance)^((story*2)==distance));结果是true。按照题中的数据来算是完全没有问题的。 直接忽略1Ftrue ^ true 等价于 1 ^ 1,两边相同,得到0,false ^是异或运算符,只有当两端一个为true一个为false,这个表示式true ^ false或者false ^ true才会为true,其他情况为false。 (tail > distance):true((story * 2) == tail) :truetrue ^ true : false第一个不会输出;(distance + 1 != tail):false((story * 2) == distance):falsefalse ^ false : false第二个也不会输出。异或运算,1,false ^ false : false 2,true ^ true : false 3,false ^ true : true 4,true ^ false : true launchFrame()是什么? 为什么这段程序只能执行一半? 紧急求救!!!! abstract applet如何自动检测客户端的jre版本是否是jre1.6,如果不是则提示下载! 我做了一个免费提供大家寻找私活的网站,大家能进来看看为什么人不多吗? 如何取得字符的ASCII值? 关于类~~~ 帮帮忙 怎么样才能让金山词霸在Jbuilder中抓词? 关于在有返回值的方法中抛出RuntimeException equals问题又来啦
结果没错的,
((tail > distance) ^ ((story * 2) == tail))的值是false;提问的帖子中错输成了:
如果单独输出:System.out.println((tail>distance)^((story*2)==distance));结果是true。按照题中的数据来算是完全没有问题的。
((story * 2) == tail) :true
true ^ true : false
第一个不会输出;
(distance + 1 != tail):false
((story * 2) == distance):false
false ^ false : false
第二个也不会输出。
异或运算,1,false ^ false : false
2,true ^ true : false
3,false ^ true : true
4,true ^ false : true