java中的几种运算符day_4

本文详细解析Java中的四种运算符:算数运算符、赋值运算符、比较运算符、逻辑运算符,并重点介绍了除法运算、求余运算、位运算符(按位取反、左移运算符、右移运算符)、移位运算符(>>、>>>)。通过实例代码演示了各种运算符的使用方法及特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



java运算符可以分为如下几种:

  1. 算数运算符

  2. 赋值运算符

  3. 比较运算符

  4. 逻辑运算符

  5. 位运算符

  6. 类型相关运算符

 

几种类型中的几个运算符:

1、除法运算符   /

除法运算符有些特殊,如果参与运算的是两个都是整形的,则除数不可以是0,否则将会引发除以零异常;但如果两个运算数有一个是浮点数,或两个都是,则计算结果也是浮点数;此时允许除数是0,或者0.0,得到结果是正无穷大或负无穷大。代码如下:

doublea=5.2;    //除法运算的验证

doubleb=3.4;

doublediv=a/b;

System.out.println(div);

System.out.println("5除以0.0的结果是:"+5/0.0);//输出正无穷大:Infinity

System.out.println("-5除以0.0的结果是:"+-5/0.0);//输出负无穷大:-Infinity

System.out.println("5除以0的结果是:"+-5/0);//此句将出现异常

运行结果:

2、求余运算符  %

求余的运算结果不一定总是整数;如果求余运算的两个操作数中有一个或者两个是浮点数,则允许第二个操作数是00.0,只是求余运算的结果是非数:

NaN。代码如下:

double a1=4.3;

double a2=8.43;

double mod=a1%a2;

System.out.println(mod);

System.out.println("50.0求余的结果是:"+5%0.0);//结果为非数NaN

System.out.println("-5.00求余的结果是:"+-5.0%0);//结果为非数NaN

System.out.println("05.0求余的结果是:"+0%5.0);//结果为0

System.out.println("00.0求余的结果是:"+5%0.0);//结果为非数NaN

System.out.println("-58求余的结果是:"+-5%8);//

System.out.println("-50求余的结果是:"+-5%0);//出现异常

   

 

 

运行结果如下:

4、按位取反   ~

   负整数的按位取反:因为负整数在计算机里以补码形式存在,所以对负数取反的时候应注意用其补码取反!代码如下:

 

System.out.println("-10按位取反的结果是:"+~-10);

System.out.println("10按位取反的结果是:"+~10);

运行结果:


 

5、左移运算符  <<

左移运算符是将运算数的二进制码整体左移指定位数,左移后右边空出来的为以0来填充,例如如下代码:

System.out.println("3左移4位的结果是:"+(3 << 4));

System.out.println("-3左移4位的结果是:"+(-3 << 4));

运行结果:


6、右移运算符  >>(右移运算符)、 >>>(无符号右移运算符)

Java的右移运算符有两个:>>>>>,对于>>运算符而言, 把第一个操作数的二进制码右移指定位数后,左边空出来的位以原来的符号位来填充。即如果第一个操作数原来是正数,则左边补0,若是负数,则补1>>>是无符号右移运算符,它把第一个操作数的二进制码右移指定位数后,左边空出来的位总是以0来填充。代码如下:

System.out.println("-8右移2位的结果为:"+(-8>>2));

System.out.println("8右移2位的结果为:"+(8>>2));

System.out.println("-8无符号右移2位的结果为:"+(-8>>>2));   

System.out.println("8无符号右移2位的结果为:"+(8>>>2));

      

运行结果:

注意:

>>>>><<三个移位运算符并不是适合所有的数值类型,它们值适合对byte

shortcharintlong等整型进行运算。除此之外,进行移位运算时还有如下的规则:

  1. 对于低于int类型(如byteshort、和char)的操作数总是先自动类型转换为int类型后再移位。

  2. 对于int类型的整数移位a>>b,b>32,系统先用b32求余(因为int类型只有32位),得到的结果才是真正的移位位数。例如a>>33a>>1的结果完全一样,而a>>32的结果和a相同。

  3. 对于long型的整数移位时a>>b,b>64,总是先用b64求余(long类型是64位)得到的结果才是真正的移位位数。

    代码如下:

    int a=21;

    long b=3;

    System.out.println("a="+a);

    System.out.println("a右移32位的结果为:"+(a>>32));

    System.out.println("a右移1位的结果为:"+(a>>1));

    System.out.println("a右移33位的结果为:"+(a>>33));

          

    System.out.println("b="+b);

    System.out.println("b左移64位的结果为:"+(b<<64));

    System.out.println("b左移2位的结果为:"+(b<<2));

        System.out.println("b左移66位的结果为:"+(b<<66));

     

    运行结果:

     


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值