一篇文章带你入门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重写(Override)与重载(Overload)区别原理解析
这篇文章主要介绍了Java重写(Override)与重载(Overload)区别原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-02-02spring boot+jwt实现api的token认证详解
这篇文章主要给大家介绍了关于spring boot+jwt实现api的token认证的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一学习学习吧2018-12-12Java使用FileInputStream流读取文件示例详解
这篇文章主要介绍了Java使用FileInputStream流读取文件示例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-07-07Spring Security前后分离校验token的实现方法
这篇文章主要介绍了Spring Security前后分离校验token的方法,本次token生成采取jwt的方式,通过引入jwt依赖文件配置token管理器,对Spring Security校验token相关知识感兴趣的朋友一起看看吧2022-02-02SQL Server 2000 Driver for JDBC Service Pack 3 安装测试方法
这篇文章主要介绍了数据库连接测试程序(SQL Server 2000 Driver for JDBC Service Pack 3 安装测试),需要的朋友可以参考下2014-10-10Spring之什么是ObjectFactory?什么是ObjectProvider?
这篇文章主要介绍了Spring之什么是ObjectFactory?什么是ObjectProvider?具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-01-01
最新评论