运算符
概念 : 被指定了运算规则的符号
分类 :
算术运算符 :
+(求和)
应用场景 :
1*输出语句对字面值直接使用
2*输出语句中对变量运算
3*将运算的结果保存在变量
结果数据类型的问题 :
1*结果数据类型和运算元素中大类型保持一致
例 : double a = b(int)+c(double)
2*byte short char 参与运算时,会自动提升为int类型
byte b1 = 3;
byte b2 = 4;
byte sum = b1+b2;
编译会报错,如何改错?
1*强制类型转换
byte sum = (byte)(b1+b2);
2*修改结果数据类型
int sum = b1 + b2 ;
但是:
byte sum2 = 3+4;编译不会报错
原因 :
1*编译期间只校验变量类型,不确定变量的值
2*编译期间进行优化,对于字面值会在编译期由虚拟机进行运算,所以以上程序编译之后
byte sum1 = 7;并检查7在不在byte的范围之内,如果超出范围,编译报错
-(求差)
*(求积)
/(求商运算)
System.out.println(6/4);//1
1*int/int结果必然为int类型 只取整数部分
2*除数wei0的情况 : 被除数为整型,编译不会报错,运行会抛出异常
被除数为正浮点数 :
System.out.println(2.0/0);//Infinity无穷大
System.out.println(0/0); //NaN--not a number 非数字
System.out.println(-2.0/0);//-Infinity无穷小
%(取余)
应用场景
整数--余数为0
奇偶数--对2进行取余运算 判断余数是否为0
1 2 3...10 hash随机散列
分成3组 每组的个数尽量均衡
num%3 结果 0 1 2
++ (自增运算符) --(自减运算符)
int x = 2;
让x变量的值+1
x = ++x;
应用场景 : 作用于变量,不能应用字面值或者常量
常量 : x++;<=>(type)(x+1)
考虑++可能会超出范围从而得到错误的数据值
++可以在变量前也可以在变量后
变量在前,++在后,则先使用变量的值参加运行 再让变量+1
++在前,变量在后,则先让变量的值自加1,再参与运算
注意 : 实际开发中最好不要写太复杂的表达式,会降低程序的可读性
赋值运算符 : =
关系运算符 : & |
逻辑运算符 :
三目运算符 : (条件) 条件1 : 条件2
位运算符 :