Java运算符详解

目录

一、算数运算符

(一)、基本四则运算符:

1、加法、减法、乘法运算符

2、除法运算符 

3、取模运算符 

(二)、算数运算符 

(三)、自增、自减运算符 

二、关系运算符 

三、逻辑运算符 

(一)、逻辑与

(二)、逻辑或 

(三)、逻辑非 

四、位运算符 

 (一)、按位与

(二)、按位或 

(三)、按位取反 

(四)、按位异或 

五、移位运算符

 (一)、左移运算符

(二)、右移运算符 

(三)、无符号右移 

六、条件运算符 

一、算数运算符

(一)、基本四则运算符:

1、加法、减法、乘法运算符

加法运算符:+ 

减法运算符:-

乘法运算符:*

注意:

  • 当两个类型不一致的数字进行运算时,范围小的会自动提升为范围大的进行运算,例如:1+1.1=2.1,1首先会提升为double型数据再参与运算。 
  • 这三类都是二元运算符,正常使用即可。

2、除法运算符 

除法运算符:/

注意:

  • 若/运算符的两端都是整数,则运算结果为整数,例如:1/2=0。
  • 若/运算符只要有一端为浮点数运算符,则运算结果为浮点数,例如:1.0/2=0.5,1/2.0=0.5,1.0/2.0=0.5。
  • 运算符的右端不能为0,即不能对0做/运算。 

3、取模运算符 

取模运算符:%

注意:

  • %运算结果的正负只与%左端的数有关,例如:10%3=1,-10%3=-1,10%-3=1。 
  • %运算可以有浮点数参与,例如:12.8%5=2.8。
  • %运算符的右端不能为0,即不能对0进行取模运算。

(二)、算数运算符 

算术运算符有:+=,-=,*=,/=,%= 

例如:a*=12+9  ->a=a*(12+9) 

注意:

  • 这一类运算符的左端必须是变量,然后将运算结果赋值给左边的变量。 
  • 当运算符的右端不仅仅只有一个常量时,尽量给右端整体加上括号,以免出错。

(三)、自增、自减运算符 

自增运算符:++a(前置自增),a++(后置自增)

自减运算符:--a(前置自减),a--(后置自减) 

这类运算符的结果都是先将变量进行加1或者减1,然后再将运算结果赋值给该变量。

那么前置自增和后置自增到底有什么区别?

 public static void main(String[] args) {
        int a=1;
        int b=a++;
        System.out.println(a);
        System.out.println(b);
    }

运行结果:

public static void main(String[] args) {
        int a=1;
        int b=++a;
        System.out.println(a);
        System.out.println(b);
    }

运行结果:

这两个的区别主要是参与表达式运算时,前置自增是先进行加一运算,在进行相关表达式的计算,但是后置自增,是先进行相关表达式计算,再进行加一运算,前置和后置对于自增运算变量本身并没有较大区别,但是对于其所参与的表达式的值有影响。

所以,对于上述例子,第一段代码是先对b进行赋值运算,再自增,故a=1,b=2;但是在第二段代码中,是先对a进行自增运算,此时a的值为2,再进行赋值,故b的值为2。 

二、关系运算符 

关系运算符包含有:

==、!=、>、>=、<、<=

注意:

  • ==和=的区别:==是判断左右两端是否相等,=是将右端赋值给左边变量。
  • 不能在一个表达式中连着使用关系运算符,例如:a>2>b,这是不允许的。 

通俗来说,关系运算符主要功能时进行判断。 

三、逻辑运算符 

(一)、逻辑与

逻辑与:&&

注意: 

  • &&要求两端的布尔表达式的值都为true时,结果才为true,否则为false。
  • &&遵守短路求值规则,即当左边的布尔表达式的值为false时,便不会再对右边的布尔表达式进行计算,其结果直接为false。 
public static void main(String[] args) {
       int a=0;
       int b=1;
        System.out.println((a==b)&&(a==(a++)));
        System.out.println(a);
    }

运行结果:

分析:由于a==b的值为false,&&便不会执行后面的代码,所以a=1。

public static void main(String[] args) {
       int a=1;
       int b=1;
        System.out.println((a==b)&&(a==(a++)));
        System.out.println(a);
    }

运行结果:

分析:由于a==b的值为true,&&便会执行后面的代码,所以a=2。 

(二)、逻辑或 

逻辑或:|| 

注意

  • ||要求只要两端只要有一端的布尔表达式结果为true,其结果便为true。
  • ||同样遵守短路逻辑运算,只要||的左端布尔表达式为true,代码便不会执行右边,||的运算结果为true。

由于||与&&类似,便不再进行赘述。 

(三)、逻辑非 

逻辑非:! 

注意:

  • !是对布尔表达式的结果取非,例如:!(true)的结果为false。 
  • !的右端必须是布尔表达式,如下操作是不允许的:

四、位运算符 

由于在计算机中利用二进制存储数据信息,八位二进制为一个字节,在进行位运算时,首先需要将要运算的数字转换为二进制数,再进行运算。

 (一)、按位与

按位与:& 

public static void main(String[] args) {
       int a=3;
       int b=5;
        System.out.println(a&b);
    }

运行结果:

解析:

  

&的两端可以是布尔表达式,但是它并不遵守短路运算,&两端的布尔表达式都会执行 ,同样要求只有&两端布尔表达式都为true时,结果才是true。

(二)、按位或 

按位或:| 

public static void main(String[] args) {
       int a=3;
       int b=5;
        System.out.println(a|b);
    }

运行结果:

解析:

|的两端可以是布尔表达式,但是它并不遵守短路运算,|  两端的布尔表达式都会执行 ,同样要求只有|只要有一端布尔表达式为true时,结果是true。 

(三)、按位取反 

按位取反:~ 

 public static void main(String[] args) {
       int a=3;
        System.out.println(~a);
    }

运行结果:

解析:

  

(四)、按位异或 

 按位异或:^

^运算的规则是相同为0,不同为1。 

public static void main(String[] args) {
       int a=3;
       int b=5;
        System.out.println(a^b);
    }

运算结果:

解析:

五、移位运算符

 (一)、左移运算符

 左移运算符:<<

运算规则:向左移位,右侧补0。 

 public static void main(String[] args) {
       int a=3;
       System.out.println(a<<1);
    }

运行结果:

解析:

(二)、右移运算符 

 右移运算符:>>

运算规则:向右移位,左侧补符号位 

 public static void main(String[] args) {
       int a=3;
       System.out.println(a>>1);
    }

运行结果:

解析:

(三)、无符号右移 

无符号右移:>>> 

运算规则:向右移位,左侧补0 

注意:没有无符号左移 

六、条件运算符 

条件运算符:

表达式1?表达式2:表达式3

运算规则:

  • 若表达式1的值为true,则执行表达式2;
  • 若表达式1的值为false,则执行表达式3; 

要求:表达式2和表达式3必须为同类型表达式,除非能发生隐式转换,还有条件运算符要有计算结果。 

例题解析:

public static void main(String[] args) {
       int a=10;
       int b=21;
       int c=a<b?a>9?11:b:a;
        System.out.println(c);
    }

运行结果: 11

 

这个题目首先判断a<b满足,然后进入蓝色部分,再进行a>9的判断,满足则c=11。 

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

过✪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值