在最底层,Java 中的数据是通过使用操作符来操作的。
3.1 更简单的打印语句
静态导入,CLASSPATH,类库
3.2 使用 Java 操作符
3.3 优先级
先乘除后加减
3.4 赋值
基本数据类型的赋值;
注意对象的赋值;
3.4.1 方法调用中的别名问题
方法调用传递的也是对象的引用;
3.5 算术操作符
一元减号
一元加号
二元加号
二元减号
????????小朋友在这里有很多的问号??????????
一元减号用于转变数据的符号;
一元加号将较小类型的操作数提升为int
3.6 自动递增和递减
— ++ ;
a++ -> a = a + 1;
前缀式 :先执行运算,再生成值
后缀式:会先生成值,再执行运算
3.7 关系操作符
3.8 逻辑操作符
&& || ! 与或非
3.8.1 短路
3.9 直接常量
十六进制 0x
3.9.1 指数计数法
3.10 按位操作符
按位操作符用来操作整数基本数据类型中的单个“比特”bit,即二进制位。
public class BitOps {
public static void main(String[] args) {
int x = 0xaa;
int a = 0x55;
System.out.println(Integer.toBinaryString(x));
System.out.println(Integer.toBinaryString(a));
System.out.println(x & a);
System.out.println(Integer.toBinaryString(x & a));
System.out.println(x | a);
System.out.println(Integer.toBinaryString(x | a));
System.out.println(x ^ a);
System.out.println(Integer.toBinaryString(x ^ a));
System.out.println(Integer.toBinaryString(~a));
System.out.println(Integer.toBinaryString(~x));
System.out.println(Integer.toHexString(~x));
}
}
3.11 移位操作符 *
移位操作符的运算对象也是二进制的“位”。
移位操作符只可用来处理整数类型。
<< 左移操作符 低位插入 0:相当于在后面追加0
>> 右移操作符:相当于减掉末端几位
- 符号扩展,为正,高位插入0
- 符号扩展,为负,高位插入1
练习题:
- 以一个所有位都为1的二进制数字开始,先左移它,然后用无符号右移操作符对其进行右移,直至所有的二进制位都被移出为止;
- 编写一个方法,它以二进制形式显示 char 类型的值。
3.12 三元操作符 if-else
三目运算符
3.13 字符串操作符 + 和 +=
如果表达式以一个字符串起头,那么后续所有的操作数都必须是字符串型。
3.14 使用操作符时常犯的错误
C/C++
while(x=y){}
3.15 类型转换操作符
3.15.1 截尾和舍入
3.15.2 提升
如果对基本数据类型执行算术运算或按位运算,只要类型比 int 小,运算之前,这些值会自动转换成 int
3.16 Java 没有 sizeof
3.17 操作符小结
如果对两个足够大的int值执行乘法运算,结果就会溢出。