第3章 运算符(随笔)

  1. 逻辑运算符

运算符

含义

用法

结合方向

&&、&

逻辑与

op1&&op2

从左到右

||

逻辑或

op1 || op2

从左到右

逻辑非

!op

从右到左

注意:逻辑运算符&&和&都表示逻辑与,他们之间的区别在哪里呢?使用逻辑运算符&会判断两个表达式,而逻辑运算符&&则是针对Boolean类型的类进行判断,当第一个表达式为false时则不会判断第二个表达式,直接输出结果从而节省计算机判断的次数。从左端表达式就能推断整个表达式的值称为短路,&&属于短路运算符,&属于非短路运算符。

  1. 位运算符

位逻辑运算符

运算符

含义

举例

&

a&b

1&0 =0,1&1 =1

|

a | b

1 | 0 =1,0 | 0 =0

~

取反

~a

~1 =0

^

异或

a^b

1^1 =0,0^0 =0,0^1 =1

相同为0,不同为1

位移运算符

运算符

含义

举例

<<

左移

左移位后高位溢出舍弃,低位补0

a << 1

1 << 1结果为2(将10进制的1变转化为2进制,然后左移1位)

>>

右移

正数右移高位补0,低位溢出舍弃

负数右移高位补1,低位溢出舍弃

b >> 2

>>>

无符号右移

x >>>1

不适合byte及short类型

注意:负数采用补码表示,负数的补码 =反码 +1

1)左移

左移:高位溢出,低位补0

左移不区分正负,左移之后高位溢出舍弃,如果符号位发生变化,则结果溢出。左移通常result*

2)右移

正数右移:高位补0,低位溢出。右移结果通常result/

负数右移:高位补1,低位溢出

3)无符号右移

无符号右移:高位补0,低位溢出

注意:无符号右移不适合byte及short类型,byte及short属于低精度类型,做无符号右移会产生溢出,因此不适合做无符号右移操作。

程序例子:

public class Demo {
    public static void main(String[] args){
        int a = 24;
        int b = -16;
        int c = -256;
        System.out.println(a+"右移2位结果:" +(a>>2));  //结果正确
        System.out.println(b+"左移3位结果:" +(b<<3));  //结果正确
        System.out.println(c+"无符号右移2位结果:" +(c>>>2));  //结果溢出,不准确

        byte d =(byte)(-32>>>1);   //结果溢出,不准确
        System.out.println("d无符号右移1位结果:" +d);

        short e = (short) (-64>>>3);   //结果溢出,不准确
        System.out.println("e无符号右移3位结果:" +e);
    }

}

运行结果:

24右移2位结果:6
-16左移3位结果:-128
-256无符号右移2位结果:1073741760
d无符号右移1位结果:-16
e无符号右移3位结果:-8

  1. 三元运算符

三元运算符使用格式:

条件式?值1:值2

解释:若条件式的值为true,则表达式取值1,否则取值2

三元运算符等价于if...else语句,例如:

public class Demo {
    public static void main(String[] args){
        boolean a = (24<50)?true:false;  //三元运算符返回值不能丢
        System.out.println("a的结果:" +a);
  }
}

a的结果:true

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值