单目运算符:
单目:~按位取反、!取非、-负号运算符、++自增、--自减
算数运算符:
算数:+(加)、-(减)、*(乘)、/(除)、%(取模)、^(乘方)、!(阶乘)、|X|、取绝对值。
三元运算符:
例:a>b?true:false 当a比b大,则返回true。当a比b小,则返回false。
赋值运算符:
= 赋值 a=b 将b的值赋给a
+=加赋值 a+=b ——> a=a+b
-=减赋值 同上
*=乘赋值
/=除赋值
%=求余赋值
&=按位与赋值
|=按位或赋值
^=按位异或赋值
<<=左移位赋值
>>=右移位赋值
关系运算符(比较运算符):
< 小于
<= 小于等于
> 大于
>= 大于等于
== 恒等于
!= 不等于
逻辑运算符
&& 当左右两端都为真,返回结果为真
|| 当左右两端任何一个为真,返回结果为真
! !true 返回的结果是false,!false 返回的结果是true。
位运算符:
& 位与运算符
| 位或运算符
^ 异或运算符
~ 取反运算符
<< 向左移位
>> 向右移位 正数高位补0,负数高位补1
>>> 无符号移位 不管征服都是高位补0
package yunsuanfu;
public class WeiYunSuan {
public static void main(String[] args) {
int a =30;
int b = 60;
int c = 0;
/**
* &位与运算分析
* 30转换成二进制
* 30/2=15 0
* 15/2=7 1
* 7/2=3 1
* 3/2=1 1
* 1/2=0 1
*
* 所以30转成二进制是 0000 0000 0001 1110 int为整型是四个字节
* 60转换成二进制 为 0000 0000 0011 1100
* 0000 0000 0001 1110
* & 0000 0000 0011 1100
* ——————————————————————————————
* 0000 0000 0001 1100
* 在将0000 0000 0001 1100 转成十进制 为0*2^0 + 0*2^1 + 1*2^2 + 1*2^3 + 1*2^4=28
*
*
*/
c=a & b;
System.out.println(c); //输出结果28
/**
* |位或运算分析
* 0000 0000 0001 1110
* | 0000 0000 0011 1100
* ___________________________
* 0000 0000 0011 1110
*
*/
c=a|b;
System.out.println(c); //输出结果62
/**
* ^位异或运算分析
*
* 0000 0000 0001 1110
* ^ 0000 0000 0011 1100
* _________________________
* 0000 0000 0010 0010
*
*
*/
c=a^b;
System.out.println(c); //输出结果34
/**
* ~取反运算分析,只针对一个数据进行操作
* 例如~30
* ~ 0000 0000 0001 1110
* _________________________
* 1111 1111 1110 0001
*
*
*/
c=~a;
System.out.println(c); //输出结果-31
/**
* << 向左位移1位
* 0000 0000 0001 1110
* 0000 0000 0011 1100
*
* 相当于a 乘以2^1
* 如果向左移2位
* a*2^2
*
*/
System.out.println(a<<1); //输出结果60
System.out.println(a<<2); //输出结果120
/**
* >> 向右位移1位
* 0000 0000 0001 1110
* 0000 0000 0000 1111
*
* 相当于a 除以2^1
* 如果向右移2位
* a/2^2
*
*/
System.out.println(a>>1); //输出结果15
System.out.println(a>>2); //输出结果7
}
}