在最底层,Java中的数据是通过操作符来操作的。
3.1更简单的打印语句
把System.out.println(x);封装在一个类里,然后用静态导入方式,使得打印不必写那么长。
import static net.mingview.util.Print.*;静态导入Print类里所有方法。
3.2使用Java操作符
3.3优先级
3.4赋值
基础类型:是值的改变
对象类型:是引用的改变
3.4.1方法调用中的别名问题
传入方法的对象型参数会有一个别名,这个别名指代的是引用。
3.5算术操作符
Java中算术操作符有+、-、*、/、%、+=、-=、*=、/=、%=
3.5.1一元加减操作符
一元加减号与二元加减号使用相同的符号,编译器会自动判断。
x = (-a);
x = a*(-b);
一般用括号使得看起来更明显。一元加号只是为了与一元减号相对应,唯一的作用仅仅是把较小的类型转换成int。
3.6自动递增和递减
'++'和'--'都有2种用法,前缀和后缀。
前缀表示先计算再生成值,后缀表示先生成值,再计算。
3.7关系操作符
可以产生一个boolean结果的操作符是关系操作符。
包括>、<、>=、<=、==、!=
3.7.1测试对象的等价性
==和!=比较的是引用所指向的对象是否是同一个,是则返回true,否则false。
equals()方法可以被复写用于比较内容。
3.8逻辑操作符
&&与、||或、!非可以生成一个boolean值
3.8.1短路
&&如果前面表达式出现false,直接返回false,不会计算剩下的表达式值
||如果前面表达式出现true,直接返回true
3.9直接常量
可以用0X,L,F,D等字符放于前缀或后缀,表示相应数据类型。
二进制没有直接表示方法,可以用Integer,Long的toBinaryString()来输出二进制字符串
3.9.1指数计数法
float f = 1.39e-43f;
表示1.39*10的-43次方
3.10按位操作符
用于操作二进制位
&按位与,|按位或,^按位异或(不同为1,相同为0),
~按位非,把数值取反,1变0,0变1
3.11移位操作符
也是操作二进制位的,只能操作整数类型。
左移<<在低位补0,有符号右移>>低位截掉,高位补与符号位相同值。
无符号右移>>>高位补0
二进制负数 = 二进制整数取反+1
3.12三元操作符if-else
e1 ? v1 : v2
3.13字符串操作+和+=
用于拼接字符串
3.14使用操作符常犯错误
3.15类型转换操作符
(转换类型)
3.15.1截尾和舍入
把float和double转成int时,会截尾。需要舍入使用Math.round()方法
3.15.2提升
小于int类型在算术或按位计算都会变成int来算
3.16 Java没有sizeof
Java所有数据类型在所有机器上的大小都是相同的。所以不必需要sizeof来确定类型有多大