Java Grammar(二):运算符

运算符简介

盘算机自打降生以来,用作最多的就是举行盘算,而盘算离不开运算符,以是运算符在我们的Java语言中的职位举足轻重,我们现在就来领会一下Java给我们提供的运算符。

从运算的元素的个数来区分,可以分为一元运算符,二元运算符,三元运算符。

其中一元运算符包罗:

  • +(正数)
  • -(负数)
  • ++(自增1)
  • —(自减1)
  • ~(按位取反)
  • !(逻辑取反)

实在自增和自减也可以看成是特殊的二元运算符

二元运算符包罗:

  • 算术运算符:+ ,-,*,/,%
  • 逻辑运算符:&&,||
  • 关系运算符:==,!=,>,<,>=,<=
  • 位运算符:&,|,^,<<,>>,>>>
  • 赋值运算符:=,+=,-=,*=,/=,%=,<<=,>>=,&=,^=
  • instanceof运算符:instanceof

三元运算符就只有一种:?:

Java Grammar(二):运算符

这些运算信赖绝大部门已经被在座的列位所熟知,只有极个别的不是很清晰的,下面我所领会的一些面试热门知识来举行解说。

一些运算符的小常识

自增,自减的前后位置

老生常谈的一个问题,然则照样容易被搞混,自增和自减的顺序前后到底有何差别:

  • 单独使用的时刻,两种没有任何区别(温馨提醒:面试的时刻切记不要遗忘第一点哟
  • 表达式中使用的时刻,前缀会先举行+1(-1)的运算,而后缀会先运算后举行+1(-1);

在无视掉第一种情形的下,可以简朴记为前缀前,后缀后

逻辑运算符的短路特征

我们在使用逻辑运算符&&,||的时刻,可以行使逻辑运算符的短路特征削减运算次数,所谓短路特征就是当第一个条件可以判断最终效果的时刻,就不会去判断第二个条件

A && B (当A为false,直接跳过第二个条件的判断,判定为false)
A || B (当A为true,直接跳过第二个条件的判断,判定为true)

三元运算符

该运算符的主要是决议哪个值应该赋值给变量。

        int a , b;
    a = 10;
    // 若是 a 即是 1 建立,则设置 b 为 20,否则为 30
    b = (a == 1) ? 20 : 30;
    System.out.println( "Value of b is : " +  b );
    // 若是 a 即是 10 建立,则设置 b 为 20,否则为 30
    b = (a == 10) ? 20 : 30;
    System.out.println( "Value of b is : " + b );

instanceof

该运算符用于操作工具实例,检查该工具是否是一个特定类型(类类型或接口类型)。

Vehicle a = new Car();
boolean result =  a instanceof Car;
System.out.println( result);

位运算符

位运算符可能在我们一样平常中使用的并不是许多,算是一个小盲区。然则实在这个运算符照样异常的主要的,我们首先来领会一下运算的机制,与其他运算符差别的是,位运算符是要讲数值转换成二进制后,再举行运算。

&

Java Grammar(二):运算符

Flutter json 2 model with Built Value

|

Java Grammar(二):运算符

^是按位异或运算符,只有两个对应的运算位不一致的时刻,对应盘算出的位置为1,否则为0。

~是按位取反运算符,将每一位取反(1 -> 0,0 ->1)

Java Grammar(二):运算符

这里需要注重>>>>>存在一定的区别:

>> :该数对应的二进制码整体右移,左边的用原有标志位弥补,右边超出的部门舍弃。

>>> :不管正负标志位为0照样1,将该数的二进制码整体右移,左边部门总是以0填充,右边部门舍弃。

其余操作部门与<<类似,就不再绘图演示

位运算符的运用场景

  • 盘算 \(m * 2^n\) 次方

    2 << 3 = 16;
    2 * (2 * 2 * 2) = 16;
  • 判断一个数n的奇偶性

    a & 1 = 0; // 偶数
    a & 1 = 1; // 奇数
  • 不用暂且变量交流两个数

    a = a^b; 
    b = b^a; 
    a = a^b; 
  • x 的 相反数 示意为 (~x+1)

    -x = (~x+1)
  • 取绝对值 (a^(a>>31))-(a>>31)

其余的一些在算法中用到的场景,我这里就不再若干,有兴趣的同砚可以去研究一下~

运算符优先级

最高优先级的在该表上方,最低优先级的在该表底部

种别 操作符 关联性
后缀 ()[].(点操作符) 左到右
一元 ++ – !~ 右到左
乘性 * / % 左到右
加性 + – 左到右
移位 >> >>> << 左到右
关系 > >= = < <= 左到右
相等 == ~= 左到右
按位与 & 左到右
按位异或 ^ 左到右
按位或 | 左到右
逻辑与 && 左到右
逻辑或 || 左到右
条件 ?: 从右到左
赋值 =,+=,-=,等等 从右到左
逗号 左到右

民众号

动动小手点点关注,就是对创作者最大的支持和赞许
Java Grammar(二):运算符

原创文章,作者:28x29新闻网,如若转载,请注明出处:https://www.28x29.com/archives/1195.html