运算符

位运算符(<<,>>,>>>)

左移(<<):所输入数的二进制数向左移,然后在转换为十进制数

class main {
    public static void main(String[] args) {
        int i1=31;
        System.out.println(i1<<3);//248
    }
}

注意:移动的位数有限,不能移动到将二进制数1作为第一位,否则转换为十进制数是负数

class main {
    public static void main(String[] args) {
        int i1=31;
        System.out.println(i1<<28);
    }
}

右移(>>,>>>):所输入数的二进制数向右移,然后在转换为十进制数

>>:有符号右移

class main {
    public static void main(String[] args) {
        int i1=-31;
        System.out.println(i1>>2);
    }
}

>>>:无符号右移

class main {
    public static void main(String[] args) {
        int i1=-31;
        System.out.println(i1>>>2);
    }
}

与运算符(&)

&与运算符:二进制运算二者均为1则为1,其余为0

例:12&5

              0 0 0 0 1 1 0 0    (12)

      &      0 0 0 0 0 1 0 1    (5)

——————————————————

              0 0 0 0 0 1 0 0     (4)

或运算符(|)

|或运算符:二进制运算有一个为1其余均为0

例:12|5

              0 0 0 0 1 1 0 0    (12)

      |       0 0 0 0 0 1 0 1    (5)

——————————————————

              0 0 0 0 1 1 0 1     (13)

异或运算符(^)

^异或运算符:二进制运算两者不一样取值为1,其余均为0

例:12^5

              0 0 0 0 1 1 0 0    (12)

      ^      0 0 0 0 0 1 0 1    (5)

——————————————————

              0 0 0 0 1 0 0 1     (9)

三元运算符

格式:(条件表达式)?表达式1:表达式2;

如果条件表达式为true,运算后结果为表达式1

如果条件表达式为false,运算后结果为表达式2

注意:表达式1和表达式2为同种类型

public class V{
    public static void main(String[] args){
        //方法一
       /int a=3;
        int b=2;
        System.out.println("a:"+a+"b:"+b);
        int c=a;
        a=b;
        b=c;
        System.out.println("a:"+a+"b:"+b);
        //方法二
        int a=3;
        int b=2;
        System.out.println("a:"+a+"b:"+b);
        a=a^b;
        b=a^b;//(a^b)^b==a
        a=a^b;//(a^b)^a==b
        System.out.println("a:"+a+"b:"+b);
            }
        }

三元运算符与if-else的联系与区别:同在一定程度上可以与if-else相互交换(三元运算符一定可以转化为if-else,反之不一定)

原文地址:https://www.cnblogs.com/KeepCalmAndNeverSayNever/p/10074118.html