java中很多类型的运算符,这些运算符是java中的基础,也是比较重要的,但是这么多运算符记起来也比较麻烦,而且比较繁琐,这篇文章将就java运算符进行详解
1.赋值运算符
Java中用的最多的就是“=”,这个就是赋值运算符,与数学中的等号表达意思不一样,java中的等号用“==”表示,后边会解释。
例如:int score=90; 表示将90赋值给score;赋值运算符比较简单。
2.算术运算符
算数运算符有:+(加法运算符),-(减法运算符),*(乘法运算符),/(除法运算符),%(取余运算符);这些都是很简单的也是很容易理解的。
3.关系运算符
关系运算符有:>(大于号), <(小于号), >=(大于等于), <=(小于等于), ==(等于) !=(不等于);关系运算符是用来做比较运算的,比较的结果
是一个boolean类型的值,要么为(true),要么是假(false)。例如:boolean isBig=56>64;b比较结果就是假(false);
注意:“=”和“==”的区别。
“=”是把右边的值赋值给左边的变量;“==”是比较运算符,即“==”左边和右边的值是否相等;
4.单目运算符
单目运算符有:++(自增运算符),--(自减运算符),~(非);
++是在自身的基础上+1,--是在自身的基础上-1。
注意:a++和++a都是表示a增加1,没有区别,但是赋值给另外一个变量时就不一样了,例如int c=a++;
表示先把a赋值给c以后,a在增加1;而int d=++a;表示a先增加1在赋值给d;
5,逻辑运算符
逻辑运算符有:&(逻辑与),&&(短路与),|(逻辑或),||(短路或),!(逻辑非),^(逻辑异或);
逻辑与&只有当符号两边的值都为true是才为true;而短路与&&如果左边的值为false则不进行右面的值判断直接返回false,若左边的值为true则再判断右边的值为true才返回真,而逻辑与&是符号两边都要进行判断,这就是逻辑与&和短路与&&的区别。同样逻辑或 | 和短路或 | | 是一样的。
逻辑非(!)取反,逻辑异或^表示若符号两边的真假值相同则为false,若真假值不一样则为true。
注意:逻辑运算符返回的值为boolean类型的。逻辑运算符通常与循环结构连用;
6.位移运算符
位移运算符有&(位与),| (位或),~(位非),^(位异或)>>(位右移),<<(位左移)。
&(位与),| (位或),~(位非),^(位异或)与逻辑运算符的相应操作的真值表完全相同,其差别只是位运算操作的操作数和运算结果都是二进制整数,而逻辑运算相应操作的操作数和运算结果都是逻辑值boolean型。
例如:
//&按位与
int a = 3 & 4;
0000 0011
& 0000 0100
--------------------
0000 0000 = 0;只有二进制的相同位数都是1是才返回1;
//按位或|
int a = 3 | 4;
0000 0011
| 0000 0100
--------------------
0000 0111=6;只要二进制的相同位数有1则返回1;
//按位异或^
a = 9 ^ 2;
0000 1001
^ 0000 0010
-------------
0000 1011=11 ;当二进制对应的二进位相异时返回1,相同返回0;
//按位非~
二进制的每个位取反
int a = ~9;
0000 0000 0000 0000 0000 0000 0000 1001
取反
1111 1111 1111 1111 1111 1111 1111 0110 补码
1111 1111 1111 1111 1111 1111 1111 0101 反码
----------------------------------------
1000 0000 0000 0000 0000 0000 0000 1010 原码 -10
最高位符号位为1,代表是负数, 负数是用补码在计算机中存储。这一串数据就是一个补码。需要获取到原码,才能知道十进制的数据到底是几补码 减一得到反码反码取反 得到原码。
左移运算符用“<<”表示,是将运算符左边的对象,向左移动运算符右边指定的位数,并且在低位补零。
例如:int r = 5 << 2;
0000 0101
0000 0101
----------------
0001 0100 = 20;
右移运算符用符号“>>>”表示,是将运算符左边的对象向右移动运算符右边指定的位数,并且在高位补0。
7.三目运算符
补充:运算符的优先等级