Thinking in Java
在最底层,Java中的数据是通过使用操作符来操作的。
因为我之前已经掌握了C和C++,所以这一章也没太多要看的。
主要是了解Java与C++之间的差异。
如:
- String类:支持“+”和“+=”操作
- “+”操作符:“+”在System.out.println();语句中,意味着“字符串连接”,并尝试将紧跟着的非String类型转换为String类型。如:print( ""+i)会把i转换成字符串类型;
- 别名现象:执行a=b;后在执行a=c;并不会对b造成任何影响,这是理所当然的。但是,当将一个对象赋值给另一个对象时,实际上是将“引用”从一个地方复制到另一个地方。这意味着这两个引用都指向同一个对象。这种“别名现象”,如果想避免这种现象,可以这样赋值t1.value = t2.value;这样就会覆盖对象了。
- 测试对象的等价性:注意“==”和equals()的使用
- 逻辑运算符:“&&”、“||”、“!”操作只可应用与布尔值(这一点与C++不同)
- “短路效应”:如if(t1 && t2),程序将先判断t1的布尔值,如果t1为false,则直接不执行t2。
- 直接常量:整数默认为ing类型,浮点数默认为double,可添加后缀改变其类型。
- 按位操作符:“&”、“|”、“~”、“^”这些跟C语言类似,没有变化。
- 移位操作符:“<<”左移(低位补0);“>>”右移(正数补0,负数补1);“>>>”无符号右移(无论正负,都在高位补0);如果对char/byte/short类型的数值进行移位处理,那么在移位之前,他们会被转换成int类型;并且得到的结果也是int类型;
- 类型转换操作符:在Java中,对于“扩展转换”,不必显示的进行类型转换;而执行窄化转换时的操作会面临信息丢失的危险,此时,编译器会强制的要求我们 进行类型转换,否则编译不会通过;
- 截尾和四舍五入
- 类型提升
- Java没有sizeof