一篇文章带你入门java运算符
算术运算符
基本四则运算符
+ - * / %
- 对于/:int/int结果还是int,需要使用double。此外,0不能做除数。
- 对于%:表示取余,不仅可以对int取余,也可以对double取余。
例如:
System.out.println(11.5 % 2);
结果为:

增量赋值运算符
+= -= *= /= %=
这些运算符有一个特点:自动进行类型的转换。
例如:
short a = 1; a += 2; System.out.println(a);
这段代码运行之后不会报错。虽然short是短整型,进行加法运算时需要整型提升。但+=已经自动将其提升。
自增/自减运算符
++ --
- 前置++/–:先使用,再++/–
- 后置++/–:先++/–,后使用
例如:
int a = 1; int b = a++; int c = ++a; System.out.println(b); System.out.println(c);
结果为:

关系运算符
== != < > <= >=
- 关系运算符的表达式返回值都是 boolean 类型。
例如:
int a = 10; int b = 20; System.out.println(a > b);

逻辑运算符
&& || !
逻辑运算符的操作数(操作数往往是关系运算符的结果)和返回值都是 boolean类型。
&&
表达式1 && 表达式2
- 只有两个表达式都为真,结果才为真
- 如果表达式1为假,那么就不会执行表达式2这
- 两个表达式只能是布尔表达式
例如:
int a = 10; int b = 20; boolean c = (a > b) && (++a > 0); System.out.println(a);
此时,a的值仍为10。

||
表达式1 || 表达式2
- 只有两个表达式都是假,结果才为假
- 如果表达式1为真,那么就不会执行表达式2
- 这两个表达式只能是布尔表达式
例如:
int a = 10; int b = 20; boolean c = (a < b) || (++a > 0); System.out.println(a);
此时,a的值为10。

!
!表达式
表达式只能为布尔类型
位运算符
& | ~ ^
位操作表示按二进制位运算。
&(按位与)
如果两个对应二进制位都是 1, 则结果为 1, 否则结果为 0
例如:
int a = 10; int b = 20; System.out.println(a & b);
结果为:


|(按位或)
如果两个二进制位都是 0, 则结果为 0, 否则结果为 1。
例如:
int a = 10; int b = 20; System.out.println(a | b);
结果为:


~(按位取反)
如果二进制位为0,则转为1;如果该位为1,则转为0。
例如:

^(按位异或)
如果两个数字的二进制位相同, 则结果为0, 相异则结果为1。
例如:
int a = 10; int b = 13; System.out.println(a ^ b);
结果为:


移位运算符
<< >> >>>
<<(左移)
<<:左边丢弃,右边补0
例如:
int a = 10; int b = a << 1; System.out.println(b);
结果为:


>>(右移)
>>:右边丢弃,左边补符号位(正数补0,负数补1)
例如:
int a = 10; int b = a >> 1; System.out.println(b);
结果为:


>>>(无符号右移)
>>>:右边丢弃,左边补0
方法同上。
注意:
左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.
右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.
由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替.
移动负数位或者移位位数过大都没有意义
条件运算符
表达式1 ? 表达式2 : 表达式3
当表达式1为true时,整个表达式的结果为表达式2的结果;当表达式1为false时,整个表达式的结果为表达式3的结果。
例如:
int a = 10; int b = 20; int c = a > b ? a : b; System.out.println(c);
结果为:

总结
本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注脚本之家的更多内容!
相关文章
java中functional interface的分类和使用详解
这篇文章主要介绍了java中functional interface的分类和使用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-04-04
SpringBoot基于HttpMessageConverter实现全局日期格式化
这篇文章主要介绍了SpringBoot基于HttpMessageConverter实现全局日期格式化,使用Jackson消息转换器,非常具有实用价值,需要的朋友可以参考下2018-12-12
SpringBoot使用SensitiveWord实现敏感词过滤
这篇文章主要为大家详细介绍了SpringBoot如何使用SensitiveWord实现敏感词过滤功能,文中示例代码讲解详细,感兴趣的小伙伴可以了解一下2023-01-01


最新评论