Java运算符选讲

14 篇文章 0 订阅

1.除零的情况

整数除零:

    public static void main(String[] args) {
        System.out.println(3/0);
    }
}

这里写图片描述
当整数除零时的结果如图所示,除零错误。

浮点除零:

`public class HELLO {
    public static void main(String[] args) {
        System.out.println(3/0);
    }
}

这时结果是Infinity
在除零时,如果分子是浮点型,则分母是零也是正确的,结果为无穷大Infinity

2.求余运算

注意:求余运算的结果不一定总是整数,它的计算结果,是使用第一个运算数除以第二个运算数,得到一个整除的结果后剩下的值,也就是余数。
如果求余运算的两个操作数中有1个或者2个是浮点数,则允许第二个操作数是0或0.0,只是求余结果是非数:NaN。0或0.0对零以外的任何数求余都将得到0或0.0。
例如:

public class test{
    public static void main(String args[]){
        System.out.println(14.4f % 0);
        System.out.println(14.4f % 2);


    }
}

这里写图片描述
程序运行结果如图示。
注意:当用0对一个整数进行求余运算时,会发生整数的除零错误,详情见上文。

3.位运算符

这里主要介绍移位运算符,java中移位UN算符有三种:

  • 右移 (算术右移):>>
  • 右移并0填充(逻辑右移): >>>
  • 左移 :<<

移位运算符的操作数都必须是整数,否则会编译出错。
\<<:左移运算符把数字的位向左移相应的位数,右边用0填充,相当于乘以 2^(移位量)。
>>:右移运算符,能够把进行移位的操作数二进制码右移指定位数,将左边空出来的位以原来的符号位填充。
>>>:能够把进行移位的操作数的二进制码右移指定位数后,将左边空出来的位总用0补充。

例如:

public class HELLO {
    public static void main(String[] args) {
        int i = 4;
        System.out.println("i << 2   = "+(i << 2));
        System.out.println("i >> 2   = "+(i >> 2));
        System.out.println("i >>> 2  = "+(i >>> 2));
        System.out.println("-i << 2  = "+(-i << 2));
        System.out.println("-i >> 2  = "+(-i >> 2));
        System.out.println("-i >>> 2 = "+(-i >>> 2));

    }
}

这里写图片描述
程序运行结果如图所示。
其实当进行移位的操作数是正数的时候,这三种移位操作的结果都不会有意外的结果,因为正数在计算机中的二进制补码表示等于其原码表示,但是负数在计算机中的二进制表示是补码表示与其原码表示相差很大,当负数进行 >>> 移位时,会将负数变为正数
再补充一点,当移位量大于数的位数时,实际位移量计算如下:
设数的位数是w,移位量是k,当k >= w时,实际移位量是 k mod w.
例如:

int i = 4i = i << 33;

i的结果是8。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值