1. 程式人生 > >Java入門系列-06-運算符

Java入門系列-06-運算符

Language 相加 more start pre 進制 `` lock ati

這篇文章為你搞懂2個問題

  1. java 中的常用運算符有哪些?如何使用?
  2. 這些運算符的運算優先級是怎樣的?

算數運算符

明顯是做數學運算的,包括以下符號:

  1. + 加法運算
    敲一敲:

    public class DemoAdd {
    public static void main(String[] args) {
        int sum=2+3;
        System.out.println(sum);//輸出變量 sum 的值
        int a=5;
        int b=3;
        int result=a+b;//將變量 a 的值與變量 b 的值相加
        System.out.println(result);
        result+=20;//相當於 result=result+20;
        System.out.println(result);
    }
    }

    當對一個變量本身進行算數運算可以使用 +=-=*=/=%= 進行簡化
    int a=10;a+=2; 在聲明變量後進行操作
    但聲明變量時賦值便是非法的 int x+=10;

  2. - 減法運算
    敲一敲:
    public class DemoMinus {
    public static void main(String[] args) {
        int diff=2-3;
        System.out.println("差:"+diff);
        double a=55.4;
        double b=5.2;
        double result=a-b;
        System.out.println("變量a的值減變量b的值等於:"+result);//結果不一定精準
        result-=10;//相當於 result=result-10;
        System.out.println("結果:"+result);
    }
    }
  3. * 乘法運算
    敲一敲:
    public class DemoMultiply {
    public static void main(String[] args) {
        int product=2*3;
        System.out.println("積:"+product);
        double a=10;
        double b=5;
        double result=a*b;
        System.out.println("變量a的值乘以變量b的值等於:"+result);
        result*=10;//相當於 result=result*10;
        System.out.println("結果:"+result);
    }
    }
  4. / 除法運算
    敲一敲:
    
    public class DemoDivide {
    public static void main(String[] args) {
        int product=5/2;
        System.out.println("商:"+product);
        double a=5;
        double b=2;
        double result=a/b;
        System.out.println("變量a的值除以變量b的值等於:"+result);
        result/=10;//相當於 result=result/10;
        System.out.println("結果:"+result);
    }
    }
5. `%` 取模、取余運算  
敲一敲:
```java
public class DemoRemainder {
    public static void main(String[] args) {
        //正常求余數
        int result=10%3;
        System.out.println("10%3="+result);
        //小數在前
        int result1=2%5;
        System.out.println("2%5="+result1);
        //其中一個是負數
        int result2=-3%2;
        System.out.println("-3%2="+result2);
        //兩個數都是負數
        int result3=-2%-5;
        System.out.println("-2%-5="+result3);
    }
}
  1. ++ -- 自增、自減運算符
    敲一敲:
    public class DemoSelf {
    public static void main(String[] args) {
        int a=10;
        a++;//後置自增
        System.out.println(a);//11
        --a;//前置自減
        System.out.println(a);//10
        System.out.println(++a);//11
        System.out.println(a++);//11
        System.out.println(a);//12
    }
    }

    自增、自減運算符是對一個變量本身進行加1或減1的操作
    運算符可以防置在變量前或後
    前置的運算符會先進行加1或減1的操作然後再使用,而後置則是先使用再進行操作

比較運算符

對比兩者之間的關系,運算後的結果是布爾值

符號 介紹
> 大於
< 小於
== 等於 用於比較值和內存地址
!= 不等於
>= 大於等於
<= 小於等於

敲一敲:

public class DemoCompare {
    public static void main(String[] args) {
        System.out.println(10>5);//10大於5 true
        System.out.println(10<5);//10小於5 false
        System.out.println(1!=1);//1不等於1 false
        System.out.println(10==5);//10等於5 false
        System.out.println(9>=9);//9大於等於9 true
        System.out.println(5<=8);//5小於等於8 true
    }
}

邏輯運算符

符號 介紹
&& 與 運算符兩邊都為true運算結果為true
|| 或 運算符只要一邊為true運算結果為true
! 非 取反,為true時結果為false,為false時結果為true

敲一敲:

public class DemoLogic {
    public static void main(String[] args) {
        int age=50;
        int money=100;
        //兩邊都不符合條件 false
        System.out.println((age<40)&&(money>100));
        //只符合一個條件 false
        System.out.println((age<60)&&(money>100));
        //兩邊都符合條件 true
        System.out.println((age<60)&&(money>30));

        //兩邊都不符合條件 false
        System.out.println((age<40)||(money>100));
        //只符合一個條件 true
        System.out.println((age<60)||(money>100));
        //兩邊都符合條件 true
        System.out.println((age<60)||(money>30));

        boolean isBig=age>60;//false
        System.out.println(!isBig);//取反 true
    }
}

位運算符

用於對二進制數據的操作

符號 介紹
&gt;&gt; 對二進制向右位移n位
&lt;&lt; 對二進制向左位移n位
& 位與運算 同位的二進制都為1時結果為1
| 位或運算 同位的二進制有一個為1時結果為1
^ 異或 從二進制高位開始比較,如果相同則為0,不相同則為1。
~ 位非

敲一敲:
demo1

public class DemoBit {
    public static void main(String[] args) {
        System.out.println(10>>1);//5
        System.out.println(7<<1);//14
    }
}

位移運算符操作的是二進制,上例中 10 的二進制是 1010
向右位移1位 變成了 101 左邊空缺將用 0 補上 0101 轉為10進制為 5
向左位移原理一樣 7 的二進制為 0111 向左位移後,右邊補0 為1110
轉為10進制為 14

demo2

public class DemoBit {
    public static void main(String[] args) {
        System.out.println(5|1);//5
        System.out.println(3|2);//3
    }
}

上例中 5 和 1 轉為二進制如下
5 0101
1 0001
5 0101
對應的位中只要有1 結果為1

demo3

public class DemoBit {
    public static void main(String[] args) {
        System.out.println(7^4);//3
    }
}

7和4的二進制如下
7 0111
4 0100
3 0011
對應位值相同為0不同為1

運算符的優先級

優先級順符由高到低是
小括號 > 算數運算符 > 比較運算符 > 邏輯運算符 > 賦值運算符

試一試

  1. 將一個整數除以2或乘2而不使用 + - * / ,如何實現?

搜索關註公眾號「享智同行」,第一時間獲取技術幹貨
回復"006"獲取答案

Java入門系列-06-運算符