1. 算术运算符
加号(+)、 减号(-)、 乘号(*)、 除号(/) 、取模(%) 、自增运算符(++) 、自减运算符(- -)
1.1. 除号(/)
取商运算
int a = 10;
int b = 3;
System.out.println(a / b); // 3
1.2 取模(%)
取余运算
int a = 10;
int b = 3;
System.out.println(a % b);// 1
1.3 自增运算符(++)、自减运算符(- -)
a++自增就相当于a=a+1;a- -相当于a=a-1;
int a=10;
int b=3;
a++;
b--;
System.out.println(a);//11
System.out.println(b);//2
1.4 前缀++、- -与后缀++、- -的区别:
++i(前缀++)在使用 i 之前,使 i 的值加 1,因此执行完++i 后,整个表达式和 i 的值均为 i+1;
i++(后缀++)在使用 i 之后,使 i 的值加 1,因此执行完 i++后,整个表达式的值为 i,而 i 的值变为 i+1
–i 在使用 i 之前,使 i 的减 1,因此执行完–i 后,整个表达式和 i 的值均为 i-1;
i–在使用 i 之后,使 i 的减 1,因此执行完 i–后,整个表达式的值为 i,而 i 的值变为 i-1
练习:
1)
int i =1;
System.out.println(i++);
2)
int i = 1;
for (; i < 5; i++) {
System.out.println(i);
}
System.out.println(i);
2. 逻辑运算符
2.1 逻辑与运算符&
两者都为true才为true:
0&0=0, 0&1=0, 1&0=0, 1&1=1
2.2 逻辑或运算符|
两者都为false才为false:
1|1=1, 1|0=1, 0|1=1, 0|0=0
2.3 逻辑非运算符!
对值进行取反:
!1=0,!0=1
2.4短路与运算符&&
如果左边表达式的值为 false,则不必对右边的表达式求值,整个表达式的结果为 false。
2.5短路或运算符||
如果运算符左边的表达式的值为 true,则整个表达式的结果为 true,不必对运算符右边的表达式再进行运算。
练习:
int a = 1;
int b = 2;
int c = 3;
//System.out.println(b++ < a++ && c++ < a++);
//System.out.println(a + "\t" + b + "\t" + c);
//System.out.println(b++ < a++ & c++ < a++);
//System.out.println(a + "\t" + b + "\t" + c);
3. 关系运算符
4. 位运算符
4.1按位与运算(&)
参与运算的两个值,如果两个相应位都为 1,则该位的结果为 1,否则为 0。
即:0&0=0,0&1=0,1&0=0,1&1=1
4.2按位或运算(|)
参与运算的两个值,如果两个相应位都是 0,则该位结果为 0,否则为 1。
即:0|0=0,0|1=1,1|0=1,1|1=1
4.3按位异或运算(^)
参与运算的两个值,如果两个相应位的某一个是 1,另一个是 0,那么按位异或(^)在该位的结果为 1。也就是说如果两个相应位相同,输出位为 0,否则为 1。
即:0 ^ 0=0,0 ^ 1=1,1 ^ 0=1,1^1=0
4.4按位取反运算(~)
按位取反运算(~)属于一元运算符,它只对一个自变量进行操作(其他所有运算符都是二元运算符)。按位取反生成与输入位的相反的值——若输入 0,则输出 1;输入 1,则输出 0。
即:~ 0=1,~1=0
4.5左移位运算符(<<)
运算符<<执行一个左移位。作左移位运算时,高位溢出,低位补零,右边的空位补 0。在不产生溢出的情况下,数据左移 1 位相当于乘以 2。其实就是计算机组成原理中的逻辑左移
例如:
int a=64,b; b=a<<1; //b=128
4.6右移位运算符(>>与>>>)
运算符>>执行一个右移位(带符号),操作数的构成二进制位右移若干位,低位溢出舍弃,高位补充原来高位的值。(右移一位相当于除 2 取商)
例如:
int a=16,b; b=a>>2; //b=4
5. 赋值运算符 =
最后总结
搞定算法,面试字节再不怕,有需要文章中分享的这些二叉树、链表、字符串、栈和队列等等各大面试高频知识点及解析
最后再分享一份终极手撕架构的大礼包(学习笔记):分布式+微服务+开源框架+性能优化
a=16,b; b=a>>2; //b=4
## 5. 赋值运算符 =
# 最后总结
搞定算法,面试字节再不怕,有需要文章中分享的这些**二叉树、链表、字符串、栈和队列等等各大面试高频知识点及解析**
最后再分享一份**终极手撕架构的大礼包(学习笔记):分布式+微服务+开源框架+性能优化**
[外链图片转存中...(img-6D9h1ULy-1727113116276)]
> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB)收录**