3.16Java运算符

3.16Java运算符

本章内容

  • 算术运算符

  • 关系运算符

  • 位运算符

  • 逻辑运算符

  • 赋值运算符

  • 其他运算符


算术运算符

所包含的算术运算符如下:

重点关注如下几个算术运算符:

public class Test{
   
   public static void main(String[] arguments){
       int a = 10;
       int b = 25;
       System.out.println("a%b =" + (b%a));
       System.out.println("a++ =" + (a++));
       System.out.println("a-- =" + (a--));
       //注意 b++与++b的不同
       System.out.println("b++ =" + (b++));
       System.out.println("++b =" + (++b));
  }
}
自增自减运算符

实例:

public class selfAddMinus{
   public static void main(String[] arguments){
       int a = 3;//定义一个局部变量
       int b = ++a;//自增运算
       int c = 3;
       int d = --c;//自减运算
       System.out.println("自增运算后的值" + b);
       System.out.println("自减运算后的值" + d);
  }
}

解析:

  • int b = ++a;

    • 拆分过程:a = a + 1 =4; b = a = 4,最后结果为:b = 4,a = 4

  • int d = --c;

    • 拆分过程:c = c - 1 =2;d = c = 2,最后结果为:d = 2,c = 2

最关键的两句话
前缀自增自减法(++a,--a):

先进行自增或者自减运算,在进行表达式运算

后缀自增自减法(a++,a--):

先进行表达式运算,再进行自增或者自减运算

实例:

public class selfAddMInus{
   public static void main(String[] arguments){
       int a = 5;
       int b = 5;
       int x = 2*++a;
       int y = 2*b++;
       System.out.println("自增运算符前缀运算后a=" + a +",x=" + x);//先进行自增或者自减运算,在进行表达式运算
       System.out.println("自增运算符后缀运算后b="+ b +",y=" +y);
  }//先进行表达式运算,再进行自增或者自减运算
}

关系运算符

实例:

public class TestNo1{
   
   public static void main(String[] arguments){
       int a = 10;
       int b = 20;
       System.out.println("a == b =" + (a == b));
       System.out.println("a != b =" + (a != b));
  }
}
//注意关系运算符返回的值是boolean

位运算符

特点:

  • Java定义了位运算符,应用与整数类型(int)、长整数型(long)、短整数型(short)、字符型(char)、字节型(byte)等类型

  • 位运算符作用再所有的位上,按位运算

实例:

/*
下面声明的是十进制数
*/
//A = 60 B = 13它们的二进制表示如下:
/*
A = 00111100;
B = 00001101;
*/
public class TestNo2{
   
   public static void mian(String[] arguments){
       int a = 60;/*60十进制数转为二进制=00111100*/
       int b = 13;/*13十进制数转为二进制=00001101*/
       int c = 0;
       c = a & b; /*12 = 00001100*/
       System.out.println("a & b =" + c);
       
       c = a | b;
       System.out.println("a | b =" + c);
       
       c = a ^ b;/*49 = 00110001*/
       System.out.println("a ^ b =" + c);
       
       c = ~a;/*-61 = 11000011*/
       System.out.println("~a =" + c);
       
       c = a;
       System.out.println("a>>2 =" + c);
       
       c = a << 2;     /* 240 = 1111 0000 */
    System.out.println("a << 2 = " + c );

    c = a >> 2;     /* 15 = 1111 */
    System.out.println("a >> 2 = " + c );
 
    c = a >>> 2;     /* 15 = 0000 1111 */
    System.out.println("a >>> 2 = " + c );
  }
}

逻辑运算符

实例:

public class TestNo3{
   
   public static void main(String[] arguments){
       boolean a = true;
       boolean b = false;
       System.out.println("a && b =" + (a && b));
       System.out.println("a || b =" + (a || b));
       System.out.println("!(a && ) =" +!(a && b));
  }
}

短路逻辑运算符

特点:

当使用与逻辑运算符时,在两个操作数都为true时,结果才为true,但是当得到第一个操作为false时,其结果就必定是false,这时候就不会再判断第二个操作了。

public class LuoJi{
   public static void main(String[] arguments){
       int a = 5;
       boolean b = (a<4) && (a++<10);
       System.out.println("使用短路裸机运算符的结果为" + b);
       System.out.println("a的结果为" + a):
  }
}
/*
解析:
该程序使用到了短路逻辑运算符(&&),首先判断 a<4 的结果为 false,则 b 的结果必定是 false,所以不再执行第二个操作 a++<10 的判断,所以 a 的值为 5。
*/

赋值运算符

 


条件运算符(?:)

特点:

  • 也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值

作用:

  • 决定哪个值应该赋值给变量

实例:

public class TestNo3{
   
   public static void main(String[] arguments){
       int a,b;
       a = 10;
       //如果a = 1成立,则设置b为20,否则为30
       b = (a == 1)?20 : 30;
       System.out.println("Value of b is:" + b);
       
       //如果a = 10成立,则设置b为20,否则为30
       b = (a == 10)?20 : 30;
       System.out.println("Value of b is:" + b);
  }
}

instanceof(n.实例)运算符

特点:

  • 该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)

  • instanceof运算符使用格式:

    • ( Object reference variable ) instanceof ( class/interface type )
  • 如果运算符左侧变量所指的对象,是操作符右侧类或接口(class/interface)的一个对象,那么结果为真。

    • String name = "James";
      boolean result = name instanceof String;//name是String类型,所以返回真
  • 如果被比较的对象兼容于右侧类型,该运算符仍然返回true。

    • class Vehicle{}

      public class Car extends Vehicle{
         public static void main(String[] arguments){
             Vehicle a = new Car();
             boolean result = a instanceof Car;
             System.out.println(result);
        }
      }

Java运算符优先级

 

posted @ 2021-03-16 20:54  俊king  阅读(63)  评论(0)    收藏  举报