运算符
算术运算符(+、-、、/、 %、++、–、+=、-=、=、/=、%=)
int a =7/4; //向数轴的中间取整(直接砍掉小数部分,保留整数部分),得1
int b = -7/2; //得-3
//低类型转向高类型,直接转,高类型向低类型转(或者不同类之间转)需要类型强制转换
a = b++; //先把b赋给a,然后b在++;
a = ++b; //b先++然后在赋给a。
//%取模运算:结果的符号与被模数的符号相同
int m1 = 12;
int n1 = 5;
//m1%n1 == 2
int m2 = -12;
int n2 = 5;
//m2%n2 == -2
int m3 = 12;
int n3 = -5;
//m3%n3 == 2
int m4 = -12;
int n4 = -5;
//m4%n4 == -2
位运算符(<<、>>、&、|、^)(计算完结果为数字)
- <<一位乘2(没溢出的情况下)
- >>一位除2(没溢出的情况下)
- 奇数移位时向下取整再除2,eg:7>>1,0000 0111 0000 0011,为3
- -128>>1,为-64(负数右移符号不会变,但整数左移符号位可能会变)
- 9 | 7 = 1001 | 0111 = 1111 = 15
- 9&7 = 1
- a^a = 0
关系运算符(>、<、>=、<=、!=)
逻辑运算符(&&、||、!)
&&:短路与,||:短路或
public static void main(String[] args){
if(3>4&&1+2>1){ //此处3>4为false,一假则假,所以&&后面的表达式不会再计算,直接跳出if语句,被短路了
System.out.println(“A”);
}
}
条件运算符: ?: 相当于简单if-esle语句
eg:3>4?1:0 : 解释 如果3大于4为真,那么输出1,如果为假输出0
优先级
- 单目运算符优先级高于多目运算符
- 算术运算符 > 位运算符 > 关系运算符 > 逻辑运算符