运算符是一种“功能”符号,用以通知 Java 进行相关的运算。
Java 语言中常用的运算符可分为如下几种:
首发地址:JAVA位运算等运算符总结
)
如果大家正在寻找一个java的学习环境,或者在开发中遇到困难,可以加入我们的java学习圈,点击即可加入,共同学习,节约学习时间,减少很多在学习中遇到的难题。
就是加减乘除这些,没什么可说的。
+ - * / % ++ --
加 减 乘 除 取余 自增 自减
就是把右边的值运算之后赋值给左边,没什么可说的。
= 右边值给左边
+= 左右相加给左边
-= 左右相减给左边
*= 左右相乘给左边
/= 左右相除给左边
%= 左右取余余数给左边
<<= 左边数据左移位赋值给左边
>>= 左边数据右移位赋值给左边
&= 按位与赋值运算符
^= 按位异或赋值操作符
|= 按位或赋值操作符
就是判断两个数据的大小,没什么可说的。
== 判断是否相等
!= 判断是否不等
> 判断是否大于
< 判断是否小于
>= 判断是否大于等于
<= 判断是否小于等于
就是操作两个boolean类型,还是有点可说的。
&& 短路与 (符号两边左边为假,就是假,右边可能会被短路。两边都是真则为真)
|| 短路或 (符号两边任何一个为真,就是真,右边可能会被短路。两边都是假则为假)
& 逻辑与 (符号两边都是真则为真,其余为假,和短路与意义一样,但是右边肯定会执行,执行完合并判断)
| 逻辑或 (符号两边任何一个为真,就是真,和短路或意义一样,但是右边肯定会执行,执行完合并判断)
! 逻辑非 (用来反转操作数的逻辑状态)
^ 逻辑异或 (符号两边结果相同为假,不同则为真)
可以将boolean的true和false看作是1和0,这样&和|的意义就是按位与和按位或。
就是? : 也称为 “三元运算符”,没什么可说的。
语法形式:布尔表达式 ? 表达式1 :表达式2
2 > 1 ? 2 : 1
结果是2
冒号前面的放true的逻辑,后面放false的逻辑。
位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。作用在所有的位上,并且按位运算
& 与,如果相对应位都是1,则结果为1,否则为0
| 或,如果相对应位都是 0,则结果为 0,否则为 1
^ 异或,如果相对应位值相同,则结果为0,否则为1
〜 取反,按位取反运算符翻转操作数的每一位,即0变成1,1变成0。
<< 按位左移运算符。左操作数按位左移右操作数指定的位数。
>> 按位右移运算符。左操作数按位右移右操作数指定的位数。
>>> 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。
按位操作,首先要知道不同类型字节长度,网上都是显示一个字节8位,不是每个数字都是8位的。但你可以将计算过程以8位来算。
不同类型长度如下:
类型 | 字节 | 位 | 长度 | 范围(可以在源码里查看) |
---|---|---|---|---|
byte | 1 byte | 8 bit | 2^8 | -2^7, 2^7-1 |
char | 2 byte | 16 bit | 2^16 | \u0000~\uFFFF |
int | 4 byte | 32 bit | 2^32 | -2^31, 2^31-1 |
short | 2 byte | 16 bit | 2^16 | -2^15, 2^15-1 |
long | 8 byte | 64 bit | 2^64 | -2^63, 2^63-1 |
double | 8 byte | 64 bit | 2^64 | 4.9e-324, 1.7976931348623157e+308 |
float | 4 byte | 32 bit | 2^32 | 1.4e-45f, 3.4028235e+38f |
做位操作,还要明白什么是原码,反码,补码。
计算机计算是用的补码
负数以补码看原码,先减1看反码,再反转看原码。
以int整型32位,带负数为例子(正数的太简单了,略过):
按位与&(补码):
数字1:00000000000000000000000000000001
数字-128:11111111111111111111111110000000
&结果:00000000000000000000000000000000
1 & -128 = 0
数字-1:11111111111111111111111111111111
数字-128:11111111111111111111111110000000
&结果:11111111111111111111111110000000
-1 & -128 = -128
按位或|(补码):
数字1:00000000000000000000000000000001
数字-128:11111111111111111111111110000000
|结果:11111111111111111111111110000001
1 | -128 = -127
数字-1:11111111111111111111111111111111
数字-128:11111111111111111111111110000000
|结果:11111111111111111111111111111111
-1 | -128 = -1
按位异或^(补码):
数字1:00000000000000000000000000000001
数字-128:11111111111111111111111110000000
^结果:11111111111111111111111110000001
1 ^ -128 = -127
数字-1:11111111111111111111111111111111
数字-128:11111111111111111111111110000000
^结果:00000000000000000000000001111111
-1 ^ -128 = 127
按位取反〜(补码):
数字1:00000000000000000000000000000001
〜结果:11111111111111111111111111111110
~1 = -2
数字-128:11111111111111111111111110000000
〜结果:00000000000000000000000001111111
~-128 = 127
按位左移<<(补码):
数字1:00000000000000000000000000000001
左移4位(<<4)结果:00000000000000000000000000010000
1 << 4 = 16
数字-128:11111111111111111111111110000000
左移4位(<<4)结果:11111111111111111111100000000000
-128 << 4 = -2048
按位右移>>(补码):
数字1:00000000000000000000000000000001
右移4位(>>4)结果:00000000000000000000000000000000
1 >> 4 = 0
数字-128:11111111111111111111111110000000
右移4位(>>4)结果:11111111111111111111111111111000
-128 >> 4 = -8
无符号右移>>>(补码):
数字1:00000000000000000000000000000001
右移4位(>>>4)结果:00000000000000000000000000000000
1 >>> 4 = 0
数字-128:11111111111111111111111110000000
右移4位(>>>4)结果:00001111111111111111111111111000
-128 >>> 4 = 268435448
品茗IT-博客专题:https://www.pomit.cn/lecture.html汇总了Spring专题、Springboot专题、SpringCloud专题、web基础配置专题。
Spring项目快速开发工具:
一键快速构建Spring项目工具
一键快速构建SpringBoot项目工具
一键快速构建SpringCloud项目工具
一站式Springboot项目生成
Mysql一键生成Mybatis注解Mapper
Spring组件化构建
SpringBoot组件化构建
SpringCloud服务化构建
喜欢这篇文章么,喜欢就加入我们一起讨论SpringCloud使用吧!
建SpringCloud项目工具](https://www.pomit.cn/java/spring/springcloud.html)
一站式Springboot项目生成
Mysql一键生成Mybatis注解Mapper
Spring组件化构建
SpringBoot组件化构建
SpringCloud服务化构建
喜欢这篇文章么,喜欢就加入我们一起讨论SpringCloud使用吧!
[外链图片转存中…(img-JflslkRx-1589852532700)]