一、算术运算符
1、基本四则运算符
+ - * / %
package p2;
/**
* @author krystal
* @date 2022/11/9 16:44
*/
public class Demo1 {
public static void main(String[] args) {
int a = 20;
int b = 10;
System.out.println(a + b); //30
System.out.println(a - b); //10
System.out.println(a * b); //200
System.out.println(a / b); //2
System.out.println(a % b); //0
int c = 5;
int d = 2;
System.out.println(c / d); //2,结果向下取整
}
}
做除法运算时,如果要得到数学中的结果,那就用double类型来接收
package p2;
/**
* @author krystal
* @date 2022/11/9 16:44
*/
public class Demo1 {
public static void main(String[] args) {
double e = 5;
double f = 2;
System.out.println(e / f); //2.5,结果向下取整
}
}
做除法和取模时,右操作数不能为0
%可以对整形除模,也可以对浮点数除模
package p2;
/**
* @author krystal
* @date 2022/11/9 17:07
*/
public class Demo2 {
public static void main(String[] args) {
System.out.println(10 % 3); //1
System.out.println(10 % -3); //1
System.out.println(-10 % 3); //-1
System.out.println(-10 % -3); //-1
}
}
两侧操作数类型不一致时,向类型大的提升
2、增量运算符
+= -= *= /= %=
package p2;
/**
* @author krystal
* @date 2022/11/9 17:12
*/
public class Demo3 {
public static void main(String[] args) {
int a = 6;
a += 2; //a=a+2
System.out.println(a); //8
a -= 1; //a=a-1
System.out.println(a); //7
a *= 3; //a=a*3
System.out.println(a); //21
a /= 2; //a=a/2
System.out.println(a); //10
a %= 4; //a=a%4
System.out.println(a); //2
}
}
只有变量才能使用该运算符,常量不能用
3、自增/自减运算符
++ --
a++/a--:先赋值,再自增或者自减
++a/--a:先自增或自减,再赋值
package p2;
/**
* @author krystal
* @date 2022/11/9 17:21
*/
public class Demo4 {
public static void main(String[] args) {
int a = 5;
System.out.println(a++); //5
System.out.println(++a); //7
int b = 10;
System.out.println(b--); //10
System.out.println(--b); //8
}
}
单独使用时,前置和后置没有区别
二、关系运算符
== != < > <= >=
package p2;
/**
* @author krystal
* @date 2022/11/9 17:51
*/
public class Demo5 {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(a == b); //false
System.out.println(a != b); //true
System.out.println(a < b); //true
System.out.println(a > b); //false
System.out.println(a <= b); //true
System.out.println(a >= b); //false
}
}
进行多次判断时,不能连着写
三、逻辑运算符
&& || !
运算结果是boolean类型
&&:逻辑与,全真为真,否则为假
||:逻辑或,至少有一位为真就为真,否则为假
!:真变假,假变真
package p2;
/**
* @author krystal
* @date 2022/11/9 17:58
*/
public class Demo6 {
public static void main(String[] args) {
System.out.println(true && true); //true
System.out.println(true && false); //false
System.out.println(false && false); //false
System.out.println(true || true); //true
System.out.println(true || false); //true
System.out.println(false || false); //false
System.out.println(!true); //false
System.out.println(!false); //true
}
}
四、位运算符
& | ~ ^
按二进制位运算
&:如果两个二进制位都是1,则结果为1,否则结果为0
int a = 10;
int b = 20;
System.out.println(a & b); //0
|:如果两个二进制位都是0,则结果为0,否则结果为1
int a = 10;
int b = 20;
System.out.println(a | b); //30
~:如果该位为0,则转为1,如果该位为1,则转为0
int a = 0xf;
System.out.printf("%x\n",~a); //0
^:如果两个数的二进制位相同,则结果为0,相异则结果为1
int a = 10;
int b = 20;
System.out.println(a ^ b); //30
五、移位运算
<<:左移,最左侧位不要了,最右侧补0,相当于/2
>>:右移,最右侧位不要了,最左侧位补符号位,相当于*2
>>>:无符号右移,最右侧位不要了,最左侧位补0
六、条件运算符
表达式1?表达式2:表达式3
当表达式1的值为true时,整个表达式的值为表达式2的值;
当表达式1的值为false时,整个表达式的值为表达式3的值;
package p2;
/**
* @author krystal
* @date 2022/11/9 18:19
*/
public class Demo8 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int max=a > b?a : b;
System.out.println(max); //20
}
}
七、运算符的优先级
运算符之间的优先级具体不用记忆,如果存在歧义,在可能存在歧义的代码加上括号即可。