0.运算符的“目”
对于运算符来说,他们的使命就是对操作数进行操作。而一个运算符接受几个操作数同时运算就被称为“几”目运算符。只能对一个操作数进行运算就称为单目运算符,两个就成为双目,而三个及以上可以称为三目、四目等,也可以被统称为多目运算符。
1.
1.算术运算符
单目:! 取非 ;- 负号运算符;++ 自增运算符 ;-- 自减运算符。
System.out.print( ! true ); //输出false
System.out.print( - 2 ); //输出-2
关于自增自减运算符,还需要补充:自增(自减)运算符只能对变量进行操作,放在变量前,则在执行该语句之前就会使变量+1(-1);放在变量后,则在执行该语句之后才会使变量+1(-1)。
int a = 10;
int b = a++; //b为10,后置++在赋值语句之后才执行+1操作。
int c = a; //c为11,执行了上一句之后a的值+1。
int d = ++a; //d为11,前置++在执行赋值语句之前便完成+1操作。
int e = a--; //自减(--)运算同理。
双目:加 + 、减 - 、乘 * 、除 / 、取余 % 。
System.out.print( 11 + 5 );//输出16
System.out.print( 11 - 5 );//输出6
System.out.print( 11 * 5 );//输出55
System.out.print( 11 / 5 );//输出2
System.out.print( 11 % 5 );//输出1
【注】取余运算符就是取除法后的余数。与C++不同,Java取余运算可以对浮点数进行操作,如11.2%5结果为1.2。
三目:xx ? yy :zz
该三目运算符由三部分构成,中间由问号和冒号连接。用法:先判断xx(问号左边的语句,该语句的值必须为布尔值),若为true,则该语句为yy的值,若为false,则为zz的值。
int a = 2;
int b = (a > 0)? a+1 : a-1; //b为3。a > 0 为true,转到a+1,则该语句值为3,b赋值为3。
2.赋值运算符
基本的赋值运算符(=)为双目运算符,作用是为变量赋值。
int a = 1;
double b = 0.1;
char c = 'c';
String d = "歪比巴布";
赋值运算符还可以与算术运算符结合,升级为更为方便的“算术赋值运算符”:+= 、-=、*=、/-。
int a = 2,b = 2,c = 2,d = 2;
a += 1; //此时a为3,该语句等价于a = a + 1;
b -= 1; //此时b为1,该语句等价于b = b - 1;
c *= 2; //此时c为4,该语句等价于c = c * 2;
d /= 2; //此时d为1,该语句等价于d = d / 2;
![wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==](https://i-blog.csdnimg.cn/blog_migrate/8a4a22257593d5f03c004a8bd7a375c1.png)
![uploading.4e448015.gif](https://i-blog.csdnimg.cn/blog_migrate/750a96f1213fde619ab85ab1c8d2e3e5.gif)
![wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==](https://i-blog.csdnimg.cn/blog_migrate/8a4a22257593d5f03c004a8bd7a375c1.png)
3.关系运算符
等于 == 、不等于 != 、大于 > 、小于 < 、大于等于 >= 、小于等于 <=。关系运算符也是双目运算符,而且双目运算符比较两个操作数后会返回布尔值。
System.out.print(1 == 2); //输出false
System.out.print(3 != 4); //输出true
System.out.print(1 > 2); //输出false
System.out.print(1 < 2); //输出true
System.out.print(2 >= 4); //输出false
System.out.print(4 <= 4); //输出true
![wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==](https://i-blog.csdnimg.cn/blog_migrate/8a4a22257593d5f03c004a8bd7a375c1.png)
![uploading.4e448015.gif](https://i-blog.csdnimg.cn/blog_migrate/750a96f1213fde619ab85ab1c8d2e3e5.gif)
![wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==](https://i-blog.csdnimg.cn/blog_migrate/8a4a22257593d5f03c004a8bd7a375c1.png)
4.逻辑运算符
·位运算:非 ~、与 & 、或 |、异或 ^。这些运算符均是对操作数的二进制码进行操作。
非:单目运算符,使操作数的1变0,0变1。
与:双目运算符,若两操作数第i位均为1,则结果第i位为1,否则为0。
或:双目运算符,若两操作数第i位均为0,则结果第i位为0,否则为1。
异或:双目运算符,若两操作数第i位不同,则结果第i位为1,否则为0。
·短路运算:非 !、与 && 、或 ||
非:单目运算符,true变false,false变true。
与:两操作数均为true,则结果为true,否则为false。若第一个操作数为false,则直接返回false,不判断第二个操作数。
或:两操作数均为false,则结果为false,否则为true。若第一个操作数为true,则直接返回true,不判断第二个操作数。
5.运算符优先级