Java运算符

    |     2015年4月1日   |   Java 语法基础   |     0 条评论   |    1683

Java 里的运算符和 C / C++ 几乎同一套:算术算出数值,关系 / 逻辑算出布尔值,位运算按二进制逐位处理,再加上三目条件运算符。先把类别记牢,再对照下面的表和图。

下表是总览,后面按类展开,并配上原文截图。

类别 结果类型 常见符号
算术 数值 + – * / % ++ —
关系 / 逻辑 boolean > < >= <= == != && || !
位运算 整数 & | ^ ~ << >> >>>
条件(三目) 两支中的一支 condition ? x1 : x2

一、数学运算符

数学运算的结果是一个数值。自增分后自加(a++ 先取值再加)和前自加(++b 先加再取值)。

QQ╜╪═╝20150323163155

二、关系运算符

关系运算符和逻辑运算符的结果是布尔值。&& / || 会短路:左边已经能定结果,右边就不算了。

QQ╜╪═╝20150323163203

三、位运算符

位运算符对整数的二进制形式逐位做逻辑运算,得到一个整数。

QQ╜╪═╝20150323163209

  • 与 &:两位都是 1,结果才是 1,否则是 0。
  • 或 |:两位里只要有一个 1,结果就是 1,否则是 0。
  • 非 ~:0 变 1,1 变 0(按补码逐位取反)。
  • 异或 ^:两位相同结果为 0,不同为 1。

<< 左移相当于乘 2 的幂,>> 算术右移保留符号位。

四、条件运算符(三目)

写法是 condition ? x1 : x2。condition 必须是 boolean:为真取 x1,为假取 x2。

五、综合示例

下面把自增、关系、逻辑、位运算和移位放在同一个 main 里跑一遍。注意:示例里后自加之后 a 变成 11,后面的 a & x 用的是加过之后的值。

public class Demo {
    public static void main(String[] args) {
        int a = 10;
        int b = 10;
        int x = 10;
        int y = 21;
        int z = 10;

        System.out.println("后自加 a=" + (a++));
        System.out.println("a的值 a=" + a);
        System.out.println("前自加 b=" + (++b));

        System.out.println("---------------------");
        System.out.println("说 x>y,对吗?" + (x > y));
        System.out.println("认为 x>y 并且 x<y,对吗?" + ((x > y) && (x < y)));
        System.out.println("认为 x>=y 或者 x==y,对吗?" + ((x >= y) || (x == y)));
        System.out.println("认为 x<y 或者 x==z,对吗?" + ((x < y) || (x == z)));
        System.out.println("---------------------");
        System.out.println("a&x 的结果是:" + (a & x));
        System.out.println("a|x 的结果是:" + (a | x));
        System.out.println("y^z 的结果是:" + (y ^ z));

        System.out.println("---------------------");
        System.out.println("a 左移2位的结果是:" + (a << 2));
        System.out.println("y 右移3位的结果是:" + (y >> 3));
    }
}

运行结果:后自加打印 10,随后 a 为 11;前自加直接打印 11。关系判断依次为 false、false、false、true。此时 a=11、x=10,a & x 为 10,a | x 为 11,y ^ z 为 31。a 左移 2 位得 44,y 右移 3 位得 2。

一句话总结:算术出数、关系出真假、位运算按二进制干活,三目按条件二选一;先分清类别,再小心 ++ 的先后和 && / || 的短路。

转载请注明来源:Java运算符
本文链接地址:https://ai.zhousir.top/?p=129
回复 取消