1.6.3 比较运算符  
 
    P.S.     1、比较运算符的结果都是boolean型,也就是要么是true,要么是false。     2、比较运算符“==”不能误写成“=” 。 
 
    示例1: - class OperatorDemo
 
 - {
 
 -     public static void main(String[] args){
 
 -         System.out.println( 3 > 2 );
 
 -         System.out.println( 3 == 2 );
 
 -     }
 
 - }
 
  复制代码     运行结果: 
 
    1.6.4 逻辑运算符 
    逻辑运算符用于连接两个boolean类型的表达式。  
    "&"符号的运算特点: 
    true & true = true; 
    true & false = false; 
    false & true = false; 
    false & false = false; 
 
    "&"符号运算规律: 
    运算的两边只要有一个是false,结果肯定是false。 
    只有两边都为true,结果才是true。 
 
    示例1:
- class OperatorDemo
 
 - {
 
 -     public static void main(String[] args){
 
 -         int x = 6;
 
 -         System.out.println( x > 2 & x < 5 );
 
 -     }
 
 - }
 
  复制代码     运行结果: 
    "|"符号的运算特点: 
    true | true = true; 
    true | false = true; 
    false | true = true; 
    false | false = false; 
 
    "|"符号运算规律: 
    运算的两边只要有一个是true,结果肯定是true。 
    只有两边都为false,结果是false。 
 
    示例2:
- class OperatorDemo
 
 - {
 
 -     public static void main(String[] args){
 
 -         int x = 3;
 
 -         System.out.println( x > 2 | x < 5 );
 
 -     }
 
 - }
 
  复制代码    运行结果:  
    "^"符号的运算特点:     true ^ true = false; 
    true ^ false = true; 
    false ^ true = true; 
    false ^ false = false;
 
    "^"符号运算规律: 
    ^符号的两边结果如果相同,结果是false。 
    两边的结果不同,结果是true。
    示例3: - class OperatorDemo
 
 - {
 
 -     public static void main(String[] args){
 
 -         int x = 3;
 
 -         System.out.println( x > 2 ^ x < 5 );
 
 -     }
 
 - }
 
  复制代码     运行结果: 
 
    "!"符号运算规律: 
    true = false 
    !false = true 
    !!true = true 
 
    示例4:
- class OperatorDemo
 
 - {
 
 -     public static void main(String[] args){
 
 -         int x = 3;
 
 -         System.out.println( ! ( x > 2 ) );
 
 -     }
 
 - }
 
  复制代码     运行结果:  
     P.S. 
    &&:和&运算的结果是一样的,但是运算过程有点小区别。 
    &:无论左边的运算结果是什么,右边都参与运算。 
    &&:当左边为false时,右边不参加运算,这样可以提升效率。 
 
    ||:和|运算的结果是一样的,但是运算过程有点小区别。 
    |:无论左边的运算结果是什么,右边都参与运算。 
    ||:当左边为true时,右边不参加运算,这样可以提升效率。 
 
    使用&&和||比使用&和|更高效一些。 
 
    逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。 
 
    1.6.5 位运算符  
    
 
  
 
  
    P.S.    位运算是直接对二进制位进行运算。  
   与运算例子: 
   6 & 3 = 2 
        110 
   &  011 
   ------- 
        010   
    示例: - class OperatorDemo
 
 - {
 
 -     public static void main(String[] args){
 
 -         System.out.println( 6 & 3 );
 
 -     }
 
 - }
 
  复制代码    运行结果: 
 
    P.S. 
    用“与运算”可以很方便提取某一二进制数的其中几位数。     或运算例子: 
    6  |  3 = 7  
         110 
     |   011 
    -------- 
         111  
      示例: - class OperatorDemo
 
 - {
 
 -     public static void main(String[] args){
 
 -         System.out.println( 6 | 3 );
 
 -     }
 
 - }
 
  复制代码    运行结果: 
 
    异或运算例子:
    6 ^ 3 = 5 
          110
     ^   011 
    ------- 
          101
     示例:
- class OperatorDemo
 
 - {
 
 -     public static void main(String[] args){
 
 -         System.out.println( 6 ^ 3 );
 
 -     }
 
 - }
 
  复制代码   运行结果:  
    P.S. 
    一个数异或同一个数两次,结果还是这个数。 
 
     例子: 
    6 ^ 3 ^ 3 = 6 
    6 ^ 3 = 5 
          110 
    ^   011 
    ------- 
          101 
    ^   011 
    ------- 
         110  
    技巧: 
    利用异或运算可以实现对数据简单地进行加密,例如对一幅图片的所有数据异或3进行加密,那么这幅图片就无法查看了。解密只需要再对图片的数据执行异或3操作即可。 
  
      取反运算:     取反操作就是对二进制数值的每一位0变1,1变0。 
 
    示例: - class OperatorDemo
 
 - {
 
 -     public static void main(String[] args){
 
 -         System.out.println( ~6 );
 
 -     }
 
 - }
 
  复制代码    运算结果: 
  
    左移运算例子:
    3 << 2 = 12 相当于 3 * 2(2) = 12
    00000000000000000000000000000011 
    00000000000000000000000000001100 
 
    3 << 3 = 24 相当于 3 * 2(3) = 24 
    00000000000000000000000000000011 
    00000000000000000000000000011000
    示例:
- class OperatorDemo
 
 - {
 
 -     public static void main(String[] args){
 
 -         System.out.println( 3 << 2 );
 
 -         System.out.println( 3 << 3 );
 
 -     }
 
 - }
 
  复制代码    运行结果:  
 
     总结:
    左移几位其实就是该数据乘以2的几次方。 
    <<:可以完成2的次幂运算。
    右移运算例子:
    6 >> 1 = 3 相当于 6/2(1)=3 
    00000000000000000000000000000110 
    00000000000000000000000000000011 
 
    6 >> 2 = 1 相当于 6/2(2) = 1 
    00000000000000000000000000000110 
    00000000000000000000000000000001
    示例:
- class OperatorDemo
 
 - {
 
 -     public static void main(String[] args){
 
 -         System.out.println( 6 >> 1 );
 
 -         System.out.println( 6 >> 2 );
 
 -     }
 
 - }
 
  复制代码    运行结果:  
 
     总结:
    右移几位其实就是该数据除以2的几次幂。
    附:
    以上例子中括号表示次幂的意思。
    P.S.
    >>:对于高位出现的空位,原来高位是什么,就用什么补这个空位。 
    >>>:无符号右移,数据进行右移时,高位出现的空位,无论原高位是什么,空位都用0补。
    练习:
    1. 最有效率的方式算出2乘以8等于几?
    答案:
- class OperatorDemo
 
 - {
 
 -     public static void main(String[] args){
 
 -         System.out.println( 2 << 3 );
 
 -     }
 
 - }
 
  复制代码     运行结果:  
    2. 对两个整数变量的值进行互换(可以使用第三方变量)。  
    答案:
- class OperatorDemo
 
 - {
 
 -     public static void main(String[] args){
 
 -         int a = 3,b = 5;
 
  
-         //开发时,使用第三方变量的形式,因为阅读性强。
 
 -         int c;
 
  
-         System.out.println( "a = " + a + ",b = " + b );
 
  
-         c = a; 
 
 -         a = b;
 
 -         b = c;
 
  
-         System.out.println( "a = " + a + ",b = " + b );
 
 -     }
 
 - }
 
  复制代码     运行结果: 
    3. 对两个整数变量的值进行互换(不可以使用第三方变量)。 
    答案1: - class OperatorDemo
 
 - {
 
 -     public static void main(String[] args){
 
 -         int a = 3,b = 5;
 
 -         int c;
 
  
-         System.out.println( "a = " + a + ",b = " + b );
 
  
-         //这种方式不要用,如果两个整数的数值过大,会超出int范围,会强制转换,数据会变化。
 
 -         a = a + b;
 
 -         b = a - b;
 
 -         a = a - b;
 
  
-         System.out.println( "a = " + a + ",b = " + b );
 
 -     }
 
 - }
 
  复制代码    运行结果: 
 
    答案2: - class OperatorDemo
 
 - {
 
 -     public static void main(String[] args){
 
 -         int a = 3,b = 5;
 
 -         int c;
 
  
-         System.out.println( "a = " + a + ",b = " + b );
 
  
-         a = a ^ b;
 
 -         b = a ^ b;
 
 -         a = a ^ b;
 
  
-        System.out.println( "a = " + a + ",b = " + b );
 
 -     }
 
 - }
 
  复制代码    运行结果: 
 
    1.6.5 三元运算符 
    格式: 
    (条件表达式) ? 表达式1 : 表达式2; 
    如果条件为true,运算后的结果是表达式1; 
    如果条件为false,运算后的结果是表达式2。 
    示例1: - class OperatorDemo
 
 - {
 
 -     public static void main(String[] args){
 
 -         int x = 3,y;
 
 -         y = ( x > 1 ) ? 100 : 200;
 
 -         System.out.println( "y = " + y );
 
 -     }
 
 - }
 
  复制代码    运行结果: 
     示例2:获取两个整数中的较大的整数。 - class OperatorDemo
 
 - {
 
 -     public static void main(String[] args){
 
 -         int a = 3,b = 5;
 
 -         int max = a > b ? a : b;
 
 -         System.out.println( max );
 
 -     }
 
 - }
 
  复制代码    运行结果: 
 
    示例3:获取三个整数中的较大的整数。
- class OperatorDemo
 
 - {
 
 -     public static void main(String[] args){
 
 -         int o = 4,p = 5,q = 10;
 
 -         int temp = o > p ? o : p;
 
 -         int max = temp > q ? temp : q;
 
 -         System.out.println( max );
 
 -     }
 
 - }
 
  复制代码     运行结果:   |