1、算数运算符

      + :加法   (++自加)

     - :减法  (--自减)

    * :乘法

    / :除法

    % :取余运算

2、关系运算符

    < :只能比较基本类型数据之间的关系,不能比较对象之间的关系。

    > : (同关系运算符“<”)

    <=: (同关系运算符“<”)

    >=: (同关系运算符“<”)

    ==:若使用该运算符比较两个对象的引用(变量),则实质上是比较两个变量是否引用了相同的对象。所谓               相同的对象是指,是否是在堆栈(Heap)中开辟的同一块儿内存单元中存放的对象。

        !=:(同关系运算符“==”)

3、逻辑运算符 (操作符只能是布尔类型的)

    &        ADND(与)        false&true    ==    false

        &&       AND(短路)       false&&true   ==    false

    |        OR(或)          false|true    ==    true

        ||       OR(短路)        false||true   ==    true

    !        NOT(非)       !true         ==    false

        ^        XOR(异或)     true^false    ==    true

   注意:

   逻辑运算符用于连接布尔型表达式。在Java中不同于数学的逻辑表达 3<X<5 ,java 中应该写成 x>3 & x<5 

  •    "&" 和"&&" 的区别:

        单个"&",左边无论真假,右边都进行计算。

        双个"&",左边为假,右边不进行计算。

  •    "|"和"||" 的区别:

        单个"|",左边无论真假,右边都进行计算。

        双个"|",左边为真,右边不进行计算。

  •    "|"和"&" 做位运算:

        二进制进行|位运算,只有0|0时候为0,其他为1,比如6|5 先把6和5换成二进制。6的二进制为110,5的二进制为101那么用位运算0|0得0只要有1得1,算出为111,111换成十进制为7,所有6|5等于7

        二进制进行&位运算,只有1&1得1,其他得0,同理可得6&5算出二进制得100,100换成十进制为4

  •     "^"异或运算和"~"反码:

       任何相同二进制异或运算都得0,1^1=0,0^0=0,不相同的异或运算都得1,1^0=1,0^1=1。同理6^5的011那么011的十进制是3。提示一个数异或两次变回本身。比如6^5^5的 110,101,101。先得011,再得110所有又变回原来的数值,此技巧可以用来转换数值,不需要第3个变量即可两个变量值互转。

       反码:二进制进行反码计算时。1变成0,0变成1。举例子~6,6的二进制是110在机器上补足32位在110之前补码0。那么反码为111.....001,此时的反码减去1得111.....111000,那么原反码减去相减的码得到0000....000111此时的十进制为-7那么加上原来减去的1得到-7+1就是~6了。

5、移位运算符(只能处理整数运算符)

  Char、byte、short类型,在进行移位之前,都将被转换成int类型,移位后的结果也是int类型;移位符号右边的操作数只截取其二进制的后5位(目的是防止因为移位操作而超出int类型的表示范围:2的5次方是32,int类型的最大范围是32位);对long类型进行移位,结果仍然是long类型,移位符号右边的操作符只截取其二进制的后6位。

  << :左移  

  >> :右移,若符号位为正,则在最高位插入0;若符号位为负,则在最高位插入1

  >>> :无符号右移,无论正负,都在最高位插入0

    移位示例:

public class Demo {
    public static void main(String[] args) {
        // 0000 0000 0000 0101
        // 0000 0000 0000 0010
        System.out.println(5>>1);//2
        // 0000 0000 0000 1000
        // 0000 0000 0000 0100
        System.out.println(8>>1);//4
        System.out.println(3+5>>1);//4
        System.out.println(3+(5>>1));//5
    }
}