第3章操作符
·操作符<操作>数据
3.1 更简单的打印语句
·旧:System.out.println("该条语句涉及许多类型(因此有许多多余的连接)");
·新:
1.静态导入:import static … …
2.println("");
3.2 使用Java操作符
·“副作用”:操作符改变操作数自身的值
~方法的“副作用”
·基本类型:几乎所有的操作符都只能操作基本类型
·“=”、“==”和“!=”能操作所有的对象
·String类支持“+”、“+=”
3.3 优先级
·编译器:String对象+非String对象,自动尝试将非String对象转换为String
3.4 赋值
·赋值 = 复制
·变量 ~ 值 物理空间
·基本类型赋值:将位置a的内容复制给b;b变,a不变
·对象赋值 :将位置a的内容/对象引用复制给b;b(所知对象)变,a(所指 对象)变
3.5 算术操作符
·加、减、乘、除、取余(取模)
3.6 自动递增和递减
·前缀式:先计算,后生成值
·后缀式:先生成值,后计算
3.7 关系操作符
·Object中的equals方法默认比较的是引用
·大多数Java类库都实现了equals方法,以便用来比较对象的内容,而不是引用
3.8 逻辑操作符
·非短路:&,|
3.9 直接常量
·十六进制:0x或0X
·八进制:前缀0
3.10 按位操作符(面向底层的操作)
·按位操作符操作整数基本数据类型中的单个“比特" = 二进制位
·按位操作符和逻辑操作符使用了相同的符号
·作用:(对两个参数中对应的)位执行布尔代数运算,最终生成一个结果
·按位与&,按位或|,按位异或^,按位非~
·&=,|=,^=
3.11 移位操作符
·移位操作符<操作>整数类型
·<<、>>
·“无符号”右移操作符:>>>
·(char、byte或short类型的)数值<位移>,先转换为int,得到int结果。只有数值右端的最低5位才有用。
·long类型数值进行处理,得到的结果也是long。只会用到数值右端的低6位。
·<<=,>>=,>>>=:如果对byte或short值进行位移运算,得到的可能不是正确的结果。它们会先被转换成int类型,再进行右移操作,然后被截断,赋值给原来的类型,可能得到-1的结果。
3.12 三元操作符
3.13 字符串操作符 + 和 +=
·操作符重载机制
·字符串起头,编译器自动…
3.14 使用操作符时常犯的错误
3.15 类型转换操作符
·窄化转换
·宽化转换
·截尾:浮点型→整型:截尾
·舍入:使用java.lang.Math中的round方法
·提升:通常,表达式中出现的最大的数据类型决定了表达式最终结果的数据类型特别注意int类型是默认类型,如果没有大于short的数据,就默认提升为int