java操作符的说明在官方api里怎么找?

来源:百度知道 编辑:UC知道 时间:2024/06/22 23:00:24
最近在复习java的语法,忽然发现java的操作符规则与c相比太混乱了.很多bt的问题,只能看api才能解决.
但是又不知道api的哪里讲操作符.

举个bt的题目:
boolean bo,bo1=true,bo2=false;
char ch,ch1='b',ch2='c';
那么以下各项能通过编译的是:
A. bo=bo1&bo2;
B. bo=bo1&&bo2;
C. bo=~bo1;
D. ch=ch1&ch2;
E. ch=ch1&&ch2;
答案居然是A,B.查了一个下午资料才明白:
boolean型居然可以做按位与(&,^,|),但是不能做按位求反(~);这是一个惊奇;
char型可以做按位与,但是boolean的返回值是boolean,而char的返回值是int;这又是一惊;

0xa2 >>> 2 得到 40 而
(byte) 0xa2>>>2 竟得到 1073741800
想必没看过api的人 很少有做对这些题的.甚至翻教材的时候发现教材上也有"位运算符只能对整型和字符型数据进行操作。"这样的错误,真是除了查api惶惶不知如何是好.但是我只会用api查类,至于操作符的规定怎么查呢?
《JAVA2核心技术》还不足.
我找到sun的文档Java Language Specification
从编译器的角度侧重于Java技术细节和内幕.

找个教材吧,推荐JAVA2核心技术(卷Ⅰ基础知识原书第7版)/Sun公司核心技术丛书
API Reference 都是类文档。
你如果实在想看,就看:
JavaTM 2 Platform Standard Edition 5.0 API 规范 中文版: http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/index.html

&&是逻辑与,&是按位与,但是在进行boolean运算时,他们的作用都是对运算符两边的boolean进行与运算,所不同的是:&&有“短路作用”,而&则没有!或运算也同理。

就比如:
int a = 10, b = 20;
a > 10 && (b = 30) > 20
在上面这个表达式里,b的值是20,因为&&时从左边开始运算的,左边的值是false,当进行&&运算时,有一个值是false,则结果为false,所以当左边表达式的值是false时,则结果为false,不运行&&右边的东西。

也就是说,a && b(假设a、b都时boolean),只有当a = true时,才判别b的值;只要a = false,就不判别b,表达式的结果就为false!~

同理,a || b,只有当a = false时,才判别b的值;只要a = true,表达式的结果就为true!

ch1 & ch2的结果为int是因为char型是按ASCII(JAVA好像是用Unicode进行存储)形式进行存储,这就相当于两个int进行按位与。

(byte) 0xa2>>>2这个是先将0xa2转成byte,变成-94,进行无符号右移时将byte型的-94转成int型,因为最高位是符号位1,进行无符号右移在高位补0,所以数就变成你得的那个了...

操作符 说明清华大学的