算数运算符
一.加法
应用
1.数字相加
数字进行运算时,数据类型不一样不能运算,需要转成一样的,才能运算
隐式转换(自动类型提升)
规则
- 把一个取值范围小的数值,转成取值范围大的数据
- byte short char 三种类型的数据在运算的时候,都会直接提升为int,然后再进行计算
- 取值范围:byte -> short -> int -> long -> float -> double
底层原理:
public class ArithmeticoperationDemo6 { public static void main(String[] args) { byte a = 10;// 0000 1010 int b = a;// 0000 0000 0000 0000 0000 0000 0000 1010 System.out.println(b); } }在前面补 0
强制转换
格式:目标数据类型 变量名 = (目标数据类型)被强制转换的数据
int a = 300;
byte b = (byte) a;
byte b1 = 10;
byte b2 = 30;
//正确
int b3 = b1 + b2;
//错误
byte b4 = b1 + b2;
//正确
byte b5 = (byte)(b1 + b2)
底层原理
例子1; public class ArithmeticoperationDemo6 { public static void main(String[] args) { int a = 300;// 0000 0000 0000 0000 0000 0001 0010 1100 byte b = (byte) a;// 0010 1100 System.out.println(b); } } 例子2: public class ArithmeticoperationDemo6 { public static void main(String[] args) { int a = 200;//128 + 64 + 8 ,0000 0000 0000 0000 0000 0000 1100 1000 byte b = (byte) a;// 1100 1000,符号位为1,以补码形式存在,原码为1011 1000,即-56 System.out.println(b); } }前面去点0
2.字符串的 “+”操作
说明:
1.当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算数运算符了
2.多个“+”操作时,从左到右逐个执行
3.字符的“+”操作
每个字符通过查找ASCII码表,获得对应的数字,然后输出
二.减法
三.乘法
细节:运算中,如果有小数,可能结果不正确
四.除法
//整数参与运算,得到的结果只能为整数 System.out.println(10 / 2); System.out.println(10 / 3); //小数参与运算,结果可能不正确 System.out.println(10 / 3.0);
五.取余
应用场景:
1.判断A 能否被 B整除
2.判断一个数是否为偶数(奇数)
3.斗地主,模1发牌给第一个玩家,模2发牌给第二个玩家...
自增自减运算符
1. 单独一行,放在前面和放在后面效果一样
2.参与运算
int a = 10;
int b = a++;//b = 10
int a = 10;
int b = ++a;//b = 11
赋值运算符
1.=
2.+=
3.-=
4./=
5.*=
6.%=
细节:+=,-=,*=,/=,%=底层都隐藏了一个强制类型转换
例
short s = 10;
s = s + 1;//底层为 s = (short)(s + 1);
关系(比较)运算符
1.==
2.!=
3.>
4.>=
5.<
6.<=
注意事项
关系运算的结果都是boolean类型,要么是true,要么十false
逻辑运算符
1.&,逻辑与,全1为1
2.|,逻辑或,全0为0
3.^,逻辑异或,相同为0,不同为1
4.!,逻辑非,取反
短路逻辑运算符,可以提高效率
1.&&,短路与,从左到右判断,如果判断到false,不用判断后面的
2.||,短路或,从左到右判断,如果判断到tue,不用判断到后面的
三元运算符
格式:关系表达式?表达式1:表达式2;
注意:三元运算符的结果必须要使用,要么赋值,要么打印
其他运算符
&:逻辑与,逐位与,全1为1
|:逻辑或,逐位或,全0为0
<<:左移,向左移动,地位补0
>>:右移,向右移动,根据原本符号位高位补0或1
>>>:无符号右移:向右移动,高位补0