一、赋值运算符
= += -= *= /= %=
将常量、变量或表达式的值赋给某一个变量。
注意:①在Java中可以通过一条赋值语句对多个变量进行赋值;
②除了 “ = ” ,其余的都是特殊的赋值运算符。
二、算术运算符
+ - * / %(取余) 自加 自减
①自加:前加加,如++i 表示先自加1,然后再赋值;
后加加,如i++ 表示先赋值,然后再+1;
②自减:与自加类似。
public class Demo01 {
public static void main(String[] args) {
int i = 6;
int j=i++;
System.out.println(i);//7
System.out.println(j);//6
int a = 6;
int b= a++;
b = ++a;
System.out.println(a);//8
System.out.println(b);//8
}
}
三、条件(比较、关系)运算符
< > ==(等于) !=(不等于) <= >=
结果都为boolean类型(true和false)。
四、位运算符
&(与) |(或) ( ^(异或) ~(非) )了解
说明:
(1)位运算作用在数字上,需要将数值转换成二进制再运算;
System.out.println(3|4);//7
System.out.println(3&4);//0
3=(0011) 4=(0100)
结论:|或,按位或,只有同时为0时结果才为0,否则为1;
&与,按位与,只有同时为1时结果才为1,否则为0.
~(非):0变1,1变0; ^(异或)两边相同为0,不同为1.
(2)位运算符作用在表达式上
int m = 66,n = 88;
System.out.println(m<n | m==n);//true
System.out.println(m<n & m==n);//false
|或:左右两边条件表达式都为false时,结果为false,否则为true;
&与:左右两边条件表达式都为true时,结果为true,否则为false。
五、逻辑运算符
&&(短路与) | |(短路或) !(非) ^(异或)
说明:
&&:当左右两边条件表达式都为true时,结果为true,否则为false;
||:当左右两边条件表达式都为false时,结果为false,否则为true。
面试题:
&&、||和&、|的区别:
public class Demo01 {
public static void main(String[] args) {
int x = 1;
int y = 2;
int z = 3;
// x++<y++先比较,比较后再加1
boolean flag = x++<y++ | ++y<z++;// |即使前面成立,后面也要执行
System.out.println(flag);//true
System.out.println(x);//2
System.out.println(y);//4
System.out.println(z);//4
}
}
除 | 变成 | | 其余都不变:
&&、| |会发生短路!!!
public class Demo01 {
public static void main(String[] args) {
int x = 1;
int y = 2;
int z = 3;
// x++<y++先比较,比较后再加1
boolean flag = x++<y++ || ++y<z++;// |即使前面成立,后面也要执行
System.out.println(flag);//true
System.out.println(x);//2
System.out.println(y);//3
System.out.println(z);//3
}
}
注意:如果 | | 前面为true时,后面的就不执行了。
public class Demo01 {
public static void main(String[] args) {
int x = 1;
int y = 2;
int z = 3;
// x++<y++先比较,比较后再加1
boolean flag = x++>y++ || ++y<z++;// |即使前面成立,后面也要执行
System.out.println(flag);//false
System.out.println(x);//2
System.out.println(y);//4
System.out.println(z);//4
}
}
注意:如果 | | 前面为false,后面则继续执行。
说明:
(1)| 与 | |
| :左右两边的表达式都得执行;
| | :左右两边的表达式只要有一边为true,结果就为true。
①true | | ?当左边表达式为true时,就可以判断整个表达式为true,此时就不需要判断右边的表达式(短路现象);
②false | | ?当左边表达式为false时,此时不能判断整个表达式的运行情况,就需要运行右边的表达式。
(2) & 与 &&
& :左右两边的表达式都得执行,都为true时,结果为true;
&& :左右两边的表达式为true,结果就为true。
①true && ?当左边表达式为true时,此时不能判断整个表达式的运行情况,就需要运行右边的表达式;
②false | | ?当左边表达式为false时,就可以判断整个表达式为false,此时就不需要判断右边的表达式(短路现象)。
六、三目运算符
/**
* 三目表达式:
* 格式:条件表达式?值1:值2;
* 表示:如果条件成立就取值1,不成立就取值2.
*/
public class Demo01 {
public static void main(String[] args) {
/**
* 条件:age>=18 可以进网吧
* age<=18 回去喝奶
*/
int age = 18;
String say = age >=18?"可以进网吧":"回去喝奶";
System.out.println(say);//可以进网吧
}
}
七、运算符的优先级
( )> 算术运算符 > 条件运算符 > 逻辑运算符 > 三目运算符 > 赋值运算符