《Java基础》运算符

1 分类

 1) 按操作数数目来划分:
   1)单目运算符
  2)双目运算符
  3)三目运算符:三元运算符
 2) 按功能来划分:
       1)算术运算符

       2)赋值运算符

       3)比较运算符

       4)逻辑运算符

       5)位运算符

2 算术运算符

+ 加法
- 减法
* 乘法
/ 除法
%
    System.out.println(1 + 1);//2
    System.out.println(2 - 1);//1
    System.out.println(4 * 2);//8
    System.out.println(4 / 2);//2
    System.out.println(12 % 2);//2

3 赋值运算符

=
+=
-=
*=
/=
%=
++
--
&=
|=
^=
>>=
<<=
        //>>=
        int a1 = 12;
        //a1 >>=2 --> a1 = a1 >> 2
        //1100 --> 0011 = 3
        a1 >>= 2;
        System.out.println(a1);//3
        
        //<<=
        int a2 = 5;
        //a2 <<= 2 --> a2 = a2 >> 2
        //0101 --> 10100 = 20
        a2 <<= 2;
        System.out.println(a2);//20
        
        //&=
        int b1 = 10;
        //b1 &= 5 --> b1 = b1 & 5
        //1010 & 0101 = 0000 = 0
        b1 &= 5;
        System.out.println(b1);//0
        
        //|=
        int b2 = 10;
        //b2 |= 5 --> b2 = b2 | 5
        //1010 | 0101 = 1111 = 15
        b2 |= 5;
        System.out.println(b2);//15
        
        //^=
        int b3 = 10;
        // b3 ^= 6 --> b3 = b3 ^ 6
        // 1010 ^ 0110 = 1100 = 12
        b3 ^= 6;
        System.out.println(b3);//12

4 比较运算符

== 等于
> 大于
< 小于
>= 大于等于
<= 小于等于
!= 不等于

5 逻辑运算符

& 逻辑与
| 逻辑或
&& 短路与
|| 短路或
!

6 位运算符

|
&
^ 异或
~

1)与 

       //逻辑与:
        //当相同的位上均为1时结果为1,否则结 果为0
        
        //练习1:
        // 12 --> 1100
        // 5  --> 0101
        // 1100 & 0101 = 0100 = 4
        System.out.println(12 & 5);//
        
        //练习2:
        // 7  --> 0111
        // 9  --> 1001
        // 0111 & 1001 = 0001 = 1
        System.out.println(7 & 9);//1

2)或

       //逻辑或
        //当两边操作数的位有一边为1时,结果为1,否则为0
        
        //练习1:
        //7 --> 0111
        //9 --> 1001
        //0111 | 1001 = 1111 = 15
        System.out.println(7 | 9);//15
        
        //练习2:
        //4 --> 0100
        //8 --> 1000
        //0100 | 1000 = 1100 = 12
        System.out.println(4 | 8);//12

3)异或

       //异或
        //两边的位不同时,结果为1,否则为0
        
        //练习1:
        // 12 --> 1100
        // 5  --> 0101
        // 1100 ^ 0101 = 1001 = 9
        System.out.println(12 ^ 5);//9
        
        //练习2:
        // 8  --> 1000
        // 9  --> 1001
        // 1000 ^ 1001 = 0001 = 1
        System.out.println(8 ^ 9);//1

4)非~

        //非
        //将数字补码取反  1变0 0变1
        
        //练习1:
        byte a = 10;
        //a 转换为二进制 00001010
        //因为是正数 原码 = 反码 = 补码
        //补码为00001010
        //补码通过非~进行取反
        //得到结果为 11110101
        //此数为补码 第1位为1 是负数
        //11110101(补码)  --> 11110100(反码) --> 10001011(原码)
        //10001011 = -11
        System.out.println(~a);//-11
        
        //练习2:
        //8默认为int类型 占用内存为4字节 = 32比特
        //转换为二进制为32位   0+23个0+00001000
        //因为是正数 原码 = 反码 = 补码
        //补码为 0+23个0+00001000
        //补码通过非~进行取反
        //得到结果为  1+23个1+11110111 
        //此数为补码 第1位为1 是负数
        //1+23个1+11110111 (补码)  转换成反码
        //1+23个1+11110110(反码)  转换成原码
        //1+23个0+00001001(原码)  = -9
        System.out.println(~8);//-9
        
        //练习3:
        short s = -7;
        //-7的二进制为 1 0000000 00000111(原码)
        //1 1111111  11111000(反码)
        //1 1111111  11111001(补码)
        //补码通过非~进行取反
        //0 0000000  00000110(补码)
        //因为是正数 原码 = 反码 = 补码
        //0 0000000  00000110(原码) = 6
        System.out.println(~s);//6

你可能感兴趣的:(Java基础,java,servlet,开发语言)