3.1 运算符与表达式
3.1.1 算术运算符与算术表达式
- 双目运算符:运算符左右两边都是操作数
- 运算符
- 加号:+
- 减号:-
- 乘号:*
- 除号:/
- 求余:%(运算的结束的结果的符号和%左边的一致)
- 运算的顺序:和数学的一样
- 特点:从左到右的顺序
3.1.2 自增、自减运算符
- x++和++x的区别
- x++:先使用x进行其他表达式的计算,在加一
- ++x:先用x加一再进行其他表达式的计算
- 运算级别高于加减乘除
- 操作数一定是变量
3.1.3 算术运算符的混合精度
- 运算之后的精度规则
- 如果最高精度低于int型常量,则结果按int计算
- 如果最高精度是long型,则按照long型计算
- 若果最高精度是float型,则按照float型计算
- 如果最高精度是double型,则按照double型计算
- 如果刻意想输出结果是float型就在数字后边加点0,eg:1–>1.0
- 普通加减乘除byte型的加减int型的精度不同的解决方法
- 错误
byte x=1; x = x+1; //这里就不能编译通,因为x是byte型,1是int型
- 正确
byte x = 1; x=(int)(x+1);
- 错题
结果是4.5,因为12/5是int型小数都省去double x; x = 12/5+2.5; System.out.println(x);
3.1.4 关系运算符和关系表达式
- 关系运算符:<,>,>=,<=,==,!=(不等于)
- 关系运算符的输出结果都是布尔型
3.1.5 逻辑运算符和逻辑表达式
- 逻辑运算符:&&(逻辑与)、||(逻辑或)、!(逻辑非)
- 逻辑运算符的规则
3.1.6 赋值运算符与赋值表达式
- 赋值运算符:=
- 等级最低结合方向从右到左
- 复合赋值运算符:y/=1意思就是y等于y除以二
3.1.7 位运算符
- 按位与运算
- 符号:&
- 规则:上下两列有一个是0,输出结果就是0,只有两个1的输出结果才是1.
- 图示
- 理解:0就是false,1就是true,与的规则就是a与b都是true才能通过就是true
- 按位或运算
- 符号:|
- 规则:和按位与运算相反,有一个是1就是1,两个都是0才是0.
- 按位非运算
- 符号:~
- 规则:0变成1,1变成0
- 按位异或运算
- 符号:^
- 规则:按位排列时相同是0否则是1
- 特点:
a^b^b=a
经过两次按位异或计算还是原来的值
3.1.8 移位运算符
- 左移
- 符号:<<(相当于乘二),空位补0
7<<2 结果:28(11100)
解释:想做移动两位,相当于7乘4
- 带符号右移
- 符号:>>(相当于除二),空位按原最高位补充,多出的移除
- 无符号右移
- 符号:>>>,原位补0注意移动的是补码