常见运算符及举例详解

运算符

符号意义
|按位或
||逻辑或
&按位且(1&1=1,其他为0)
&&逻辑与
~按位取反
^按位异或(相同是0 不同是1)
!
<<左移,补0,相当于乘以2(例:2<<3 = 8,乘以2的3次方的意思)
>>右移,补符号位,相当于除以2(例:8>>3 = 1)
>>>无符号右移,补0

(上面节选几个结合例题讲一下,比较容易混淆)

&运算符:
public static void main(String args[]) {
   System.out.println( 13 ^ 17 );
}  

两个数都转为二进制,然后从两个数的最高位进行与运算,两个都为真(1),结果才为真(1),否则为假(0)

13:01101

17:10001

13 & 17: 00001

00001转化为十进制,即1

&&运算符:

如果&&左边的表达式的值是false,右边的表达式会直接被短路掉,不会进行运算。

例如:在验证用户登录时盘判断用户名是不是 null 且不为空字符串,应当写为:

username != null && !username.equals("");

二者的顺序不能够交换,更不能用 & 运算,因为第一个条件不成立,根本不能进行字符串 equals() 的比较,否则就会报空指针异常。

| 和 || 运算符:

下面这道题输出的结果为:
在这里插入图片描述

这道题主要考的是"|“与”||"的区别。
用法:condition 1 | condition 2、condition 1 || condition 2
"|"是按位或:先判断条件1,不管条件1是否可以决定结果(这里决定结果为true),都会执行条件2

"||"是逻辑或:先判断条件1,如果条件1可以决定结果(这里决定结果为true),那么就不会执行条件2

//i=0, i<10为true,但是依然执行methodB(4),之后 j=4 
b = i < 10| methodB(4); 

//i=0, i<10位true,可以决定结果,所以不会执行methodB(8),j依然=4	
b = i < 10|| methodB(8);
^ 运算符:
public static void main(String args[]) {
   System.out.println( 14 ^ 3 );
}  

两个数都转为二进制,然后从两个数的最高位进行与运算,两个相同是假(0),不同是真(1)
​ 14:1110

​ 3:0011

14 ^ 3:1101,

1101转化为十进制,即13

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值