第3章 操作符

来源:互联网 发布:cf免费卡枪带软件 编辑:程序博客网 时间:2024/05/16 12:08

1. 字符串转换:当编译器观察到一个String后面紧跟一个“+”,而这个“+”后面又紧跟一个非String类型的元素时,就会尝试着将这个非String类型的元素转换为String。对于"+"运算符:如果表达式以一个字符串起头,那么后续所以操作数都必须是字符串型(编译器会把双引号内的字符序列自动转成字符串)。


2. 赋值问题:首先常量不能作为左值,其次:①对于基本数据类型,它存储了实际的数值,而并非指向一个对象的引用;②而在为对象赋值时,真正操作的是对象的引用(即两个对象指向同一个地址了)。由此带来的问题是:直接操作对象内的域容易导致混乱。


3. ==和!=比较的是对象的引用是否相同;equals()(对所有对象都适用的特殊方法)比较的是值,但是equals()默认行为是比较引用。


4. 在Java中,不可将一个非布尔值当作布尔值在逻辑表达式中使用。


5. 对浮点数的比较非常严格,即使两个数仅相差一点点,仍然认为是不相等的。


6. 指数记数法:如1.39E-43代表1.39*10^(-43)。编译器通常会将指数作为双精度数(double)处理。


7. 对于移位操作,形如((char)a>>2):对char,byte,short进行移位处理时。会将其自动转化为int值,并且最后的结果也是int值;形如(((char)a)>>=2):得到的结果可能不是正确的,它们会先被转换成int类型,再进行移位操作,然后被截断,赋值给原来的类型。


8. 将一个表达式转化为String类型:形如Integer.toString()可以有一个简略形式:""(空串)+x 。


9. Java没有sizeof,因为Java不需要考虑移植问题。


10. "窄化转换"有可能导致不知不觉丢失了信息,所以要小心留意。


11. 在char,byte,short中,对这些类型的任何一个进行算术运算时,都会获得一个int结果。


1 0
原创粉丝点击