什么是运算符?
- 运算符是一种特殊符号,用来表示数据的运算和比较等等,其实就是来做数据运算的。
- 分类
- 算术运算符
- 赋值运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 三元运算符
算术运算符
- 算数运算符的作用: 中学所学习的加减乘除、去模等
- 那么具体有那些算术运算符?
-
具体说明 %、/ 以及自增自减的使用
%
取模运算 本质上: a % b = a - (int)(a / b) * b
/ 法
注意细节问题
第一:整数之间作除法时,只保留整数部分
第二:注意除号左右两侧的数据类型,会发生数据类型转换
自增(减)
i++ 和 ++i的异同
第一:作为独立语言使用 i++ 的效果 跟 i-- 相同
第二:如果是在表达式或赋值语句中使用
那么 i ++ 是先使用后自增、 ++ i 则是先自增后使用
自减跟自增性质相同
经典面试题
这里的面试题其实说明了 i = i ++ 的底层机制 --> 会出现一个临时变量来存储中间的结果
关系运算符
- 关系运算符是用来判断两个类型是什么样的关系,是大于还是小于等于等等 ... ...
- 从关系运算符的结果来看只能是boolean类型,所以常将关系表达式放在 if 条件或 循环结构的条件中
- 具体有那些关系运算符?
逻辑运算符
- 逻辑运算符是用来连接多个条件的一种运算符,最后的结果也是一个boolean值
- 具体有那些关系运算符?
- 这里主要说明短路跟逻辑的区别
- 逻辑 &( | ) 跟短路 &&( || ) 的对比
-
&& 短路与:如果第一个条件为 false ,则第二个条件不会判断,最终结果为 false ,效率高
-
& 逻辑与:不管第一个条件是否为 false ,第二个条件都要判断,效率低
-
而 || 和 | 的区别,在于第一个条件是否为true,其余区别跟上述与操作相同
-
- 逻辑 &( | ) 跟短路 &&( || ) 的对比
- 除了 逻辑跟短路的对比之外,还有a ^ b (逻辑异或)的运算需要注意
- a ^ b 是当 a 和 b 不同的时候结果才是true,否则为false
- 这里主要说明短路跟逻辑的区别
赋值运算符
- 该运算符的作用就是将值赋给指定的变量
- 具体有那些赋值运算符?
-
基本赋值运算符 =
-
int a = 10;
-
-
复合赋值运算符 += , -= , *= , /= , %= 等
-
a += b 等价于 a = a + b;
-
-
-
对于赋值运算符要注意以下三点
- 第一:运算的顺序是从右到左
- 第二:赋值运算符的左边只能是变量,而右边则可以是表达式、常量、或变量
- 第三:赋值运算符会进行类型转换,这里一定要注意前面数据类型模块提到的btye、short、char做数值运算时会自动提升至整数类型
- 举例
-
byte b = 3; b += 2; // 等价 b = (byte)(b + 2);
三元运算符
- 语法格式上 条件表达式 ? 表达式 1: 表达式 2;
- 规则 条件为真输出表达式1否则输出表达式2
- 使用细节
- 第一:表达式 1 和表达式 2 要为可以赋给接收变量的类型(或可以自动转换)
- 第二:三元运算符可以转成 if--else 语句
位运算符
- 位运算符的作用是用来做二进制运算的
- 具体有那些位运算符?
- 除此之外,还有三个位运算符 >>、<< 和 >>>
-
算术右移 >> :低位溢出 , 符号位不变 , 并用符号位补溢出的高位
-
算术左移 <<: 符号位不变 , 低位补 0
-
逻辑右移>>> : 也叫无符号右移 , 低位溢出,高位补 0
-
总结
![](https://i-blog.csdnimg.cn/blog_migrate/a32730bb132751f5791c30ed990b30fc.png)