Java 语言支持如下运算符:
算术运算符 +,-,*,/,%,++,--
赋值运算符 =
关系运算符 >,<,>=,<=,==,!= instanceof
逻辑运算符 &&,||,!
位运算符 &,|,^,~ , >>,<<,>>> (了解!!!)
条件运算符 ?:
扩展赋值运算符 +=,-=,*=,/=
两个操作数
public static void main(String[] args) { int a = 10; int b = 20; int c = 25; int d = 25; System.out.println("a + b = " + (a + b) ); System.out.println("a - b = " + (a - b) ); System.out.println("a * b = " + (a * b) ); System.out.println("b / a = " + (b / a) ); }
整数运算
如果两个或多个操作数中有一个为Long, 则结果也是Long
没有long时,结果为int。即使操作数全为shot,byte,结果也是int.
public static void main(String[] args) { long a = 1231321311231231L; int b = 1213; short c = 10; byte d = 8; System.out.println(a + b + c + d); //Long类型 System.out.println(b + c + d);//Int类型 System.out.println(c + d);//Int类型 }
浮点运算
如果两个或多个操作数有一个为double, 则结果为double
只有表达表操作数都是float, 则结果才为float
public static void main(String[] args) { float a = 3.14565F; double b = 3.194546464; float c = 1.3123123F; System.out.println(a+b); //double类型 System.out.println(b+c); //double类型 System.out.println(a+c); //float类型 }
关系运算符
运算符 | 描述 | 例子 |
---|---|---|
== | 检查两个操作数的值是否相等,如果相等则为真 | (4 == 5)为假 |
!= | 检查两个操作数的值是否相等,如果不相等则为真 | (5 != 5)为假 |
> | 检查左操作数的值是否大于右操作数的值,如果大于则为真 | (5 > 4)为真 |
< | 检查左操作数的值是否小于右操作数的值,如果小于则为真 | (5 < 4)为假 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果大于或等于则为真 | (5 >= 5)为真 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果小于或等于则为真 | (5 =< 4)为假 |
在计算机中,除法分两种,对整数做除法运算以及对浮点数做除法运算;除法运算符号也分两种,/ 是对两被除数取整,% 是对被除数取余
5%3 余 2
5/3 得1
浮点数做除法运算
double num_dou1 = 7.0; double num_dou2 = 2; System.out.println("dou = " + num_dou1 / num_dou2);//dou = 3.5 System.out.println("dou = " + num_dou1 % num_dou2);//dou = 1.0
整数做除法运算
int num_int1 = 5; int num_int2 = 2; System.out.println("int1 = " + num_int1 / num_int2);//int1 = 2 System.out.println("int2 = " + num_int1 % num_int2);//int1 = 1
浮点数与整数做除法运算
int num_int2 = 2; double num_dou1 = 7.0; System.out.println("int&dou1 = " + num_dou1 / num_int2);//int&dou1 = 3.5 System.out.println("int&dou2 = " + num_dou1 % num_int2);//int&dou2 = 1.0
由上可以得出浮点数与浮点数或整数做取整反回的是带小数的,而整数对整数取整反回的还是整数,如果不想丢失精度,那在做取整时,把整数转浮点数再求值
负数%负数=负数;
负数%正数=负数;
正数%负数=正数;
自增(++)自减(--)运算符是一种特殊的算术运算符,在算术运算符中需要两个操作数来进行运算, 而自增自减运算符是一个操作数,分为前缀和后缀两种。
int a = 5; int b = a++;//后置的++是先给b赋值,然后再自增 System.out.println(b);//5,因为b是在a自增前赋值的 int c = ++b;//前置的++是先自增,然后再给c赋值 System.out.println(a);//6,因为在赋值给b后自增了1 System.out.println(b);//6,因为在赋值给c前自增了1 System.out.println(c);//6,因为b是在a自增前赋值的,而c是在b自增后赋值的
逻辑与:&&和&
逻辑或:||和|
逻辑非:!
运算符 | 描述 | 例子 |
---|---|---|
&& | 当且仅当两个操作数都为真,条件才为真 | (true && false) 为假 |
|| | 当且仅当两个操作数任一为真,条件为真 | (true && false) 为真 |
! | 如果条作为true则条件为假,反之为真 | (!true) 为假 |
例子的true和false可以为表达式,但表达式的结果必须是boolean布尔值。
逻辑与 和 逻辑或 采用短路的方式。逻辑与只要有一个为false, 则直接返回false;逻辑或只要有一个为true, 则直接返回true
从左到右计算,如果确定值则不会再计算下去。在两个操作数都为 true时,结果才为true,但是当得到第一个操作为false时,其结果就必定是false,这时候就不会再判断 第二个操作了。
int a = 5; boolean flag = (a < 4) && (a++ < 10); System.out.println(flag);//false System.out.println(a);//5 //首先判断 a<4 的结果为 false,则 b 的结果必定是 false, 所以不再执行第二个操作 a++<10 的判断 flag = (a == 5) || (--a > 4); System.out.println(flag);//true System.out.println(a);//5 //首先判断 a == 5 的结果为 true,则不管 b 的结果是啥,不再执行第二个操作 --a < 4 的判断