运算符
A.算术运算符
加,减,乘和普通的数学运算方式相同
1.分析:int a = 1; int b = 2; int c = a / b;
System.out.println(c);结果:0
结论:a,b两个整型变量相除,结果不能整除时,小数点后位数舍去,而不是四舍五入
2.分析:double a = 1; int b = 2; double c = a / b;
System.out.println(c);结果:0.5
结论:参与运算的变量中,有整型int,有double,有short,那么结果取决于变量中表示范围最大的那个变量类型,此例中为double型
3.分析:int
System.out.println(c);结果:0.0
结论:按照优先级,先算=右边的,即先计算a / b,结果为0,算完将结果再变换为double型。可知:数学运算时,是一步步地变换类型,而不是首先变换为运算范围最大的,再计算。
4.分析:int
System.out.println(c);结果:0.5
结论:a,b虽为整型,但在运算前,就通过(double)强制转换a的值为一个匿名的double型变量值
取模(余)运算符,使用%表示
1.分析:int
System.out.println(c);结果:2
结论:与普通除法取余相同,5 / 3的余数就是2
2.分析:int
System.out.println(c);结果:-2
结论:与普通除法取余相同,-5 / 3商-1,余数是-2
3.分析:int
System.out.println(c);结果:-2
结论:与普通除法取余相同,-5 / -3商1,余数是-2
4.分析:int
System.out.println(c);结果:2
结论:与普通除法取余相同,5 / -3商-1,余数是2
总之:取模结果的符号与被除数相同。
5.分析:int
System.out.println(c);结果:2
B.关系运算符:
大于(>),小于(<),等于(==),不等于(!=),大于等于(>=),小于等于(<=)
1)分析:int a = 3;int b = 2;boolean c = (a>b);
System.out.println(c);结果:true
2)分析:int a = 3;int b = 2;boolean c = (a<b);
System.out.println(c);结果:false
C.逻辑运算符:(也为布尔型)(执行顺序,左到右)
3)关于逻辑运算符的短路特性:
分析:(1)int a = 3;Boolean b = (1<2) && ((a=1)<4);
结论:由于1>2为假,因此可判定结果为假,后面的无需再执行,所以a=1没有执行,a任然是3.
引申:在逻辑或运算符中,||前为真,则||后不再执行
分析:int a = 1; int b = a++;结果:a==2,b==1;
结论:关于int b = a++;先将a的值赋给b,后a自加;关于int b = ++a先将a自加,后将自加后a的值赋给b。
a = a - 2等价于a
a =a * 2等价于a
a = a / 2等价于a
D.条件运算符(三元表达式)
其形式为type d = a ? b : c;
分析:如果a为真,则返回b,如果a为假,则返回c