在最底层,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,即二进制位。

  1. public class BitOps {
  2. public static void main(String[] args) {
  3. int x = 0xaa;
  4. int a = 0x55;
  5. System.out.println(Integer.toBinaryString(x));
  6. System.out.println(Integer.toBinaryString(a));
  7. System.out.println(x & a);
  8. System.out.println(Integer.toBinaryString(x & a));
  9. System.out.println(x | a);
  10. System.out.println(Integer.toBinaryString(x | a));
  11. System.out.println(x ^ a);
  12. System.out.println(Integer.toBinaryString(x ^ a));
  13. System.out.println(Integer.toBinaryString(~a));
  14. System.out.println(Integer.toBinaryString(~x));
  15. System.out.println(Integer.toHexString(~x));
  16. }
  17. }

3.11 移位操作符 *

移位操作符的运算对象也是二进制的“位”。

移位操作符只可用来处理整数类型。

<< 左移操作符 低位插入 0:相当于在后面追加0
>> 右移操作符:相当于减掉末端几位

  • 符号扩展,为正,高位插入0
  • 符号扩展,为负,高位插入1

image.png

练习题:

  1. 以一个所有位都为1的二进制数字开始,先左移它,然后用无符号右移操作符对其进行右移,直至所有的二进制位都被移出为止;
  2. 编写一个方法,它以二进制形式显示 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值执行乘法运算,结果就会溢出。