1.算术运算符
+ - * / ++ --
Java中取余本质: a % b = a - a / b * b
经典面试题:
int i = 1;
int j = i++; //1.j = i; 2.i = i + 1;
System.out.println(j);
i = 1;
i = i++;// 1.申请一个临时变量 temp = i; 2. i = i + 1; 3.i = temp,
// 这是因为JVM在处理i=i++时会建立一个临时变量来接收i++的值
System.out.println(i);
i = 1;
i = ++i;//1.i = i + 1; 2.临时变量temp = i ; 3. i = temp;
System.out.println(i);
2.关系运算符
== != < > <= >=
返回类型为Boolean型
3.逻辑运算符
逻辑与& 短路与&& 逻辑或| 短路或|| 非!
异或 相同返回false 不同返回true
逻辑与和短路与的区别:
两者都是当条件都为真时返回true,当有条件为假时返回false
区别:
当有条件为假时,短路与不会接着判断下面的条件,而逻辑与会接着判断,因此短路与的效率高。
int a = 9;
int b = 9;
if(a < 1 && ++b < 20){
System.out.println("111");
} //++b不执行
System.out.println("a = " + a + " b = " + b);
if(a < 1 & ++b < 20){// ++b执行了
System.out.println("111");
}
System.out.println("a = " + a + " b = " + b);
输出:9 9
9 10
逻辑或与短路或的区别与上类似:对于短路或,如果第一个条件为真,接下来条件不进行判断,而逻辑或会进行判断,短路或的效率高
4.赋值运算符
基本赋值运算符:=
混合赋值运算符:+= -= *= %=
当赋值作为条件判断时:赋值语句作为判断条件时,赋值的数据类型得是布尔类型, 否则会报错,赋值的布尔类型为true则判断条件为真,否之为假。
//赋值语句作为判断条件
boolean flag = false;
if(flag = true)
System.out.println("语句1");
else
System.out.println("语句2");
/*会报错
int flag1 = 1;
if(flag1 = 2)
System.out.println("语句11");
else
System.out.println("语句22");
*/
//赋值语句作为判断条件时,赋值的数据类型得是布尔型 否则会报错
//赋值的布尔类型为true则判断条件为真 否之为假
混合赋值运算java底层会自动进行类型转换:
//复合赋值运算会进行类型转换
byte num = 8;
//num = num + 2; //int->byte X
num +=2; // == num = (byte)num+2;
System.out.println(num);
//num = num + 1; X
num++;
System.out.println(num);
5.三元运算符
条件表达式?表达式1:表达式2
当条件表达式为true,运算后的结果为表达式1
当条件表达式为false,运算后的结果为表达式2