六、Java運算符

運算符的分類
java

算數運算符

二元運算符

算術運算符中 = - * / % 屬於二元運算符,二元運算符指的是須要兩個操做數才能完成的運算的運算術。
整數運算規則設計

一、若是兩個操做數有一個爲Long,則結果也爲Long。
二、若是沒有Long,結果則爲int,即便操做數爲short、byte,結果也爲int。code

int a =1;
    long b = 2;
    //int c = a + b; //報錯 由於有一個爲Long,則結果也爲Long
    
    byte a1 = 1;
    short a2 = 1;
    int d = a1 + a2; //正確 由於若是沒有Long,結果則爲int

浮點運算規則blog

一、若是兩個操做數有一個爲double,則結果爲double。
二、只有兩個操做數都爲float,結果才爲float。字符串

double a = 1.1;
    //float b = a + 2.2f; //報錯,由於操做數有一個爲double,則結果爲double

取模運算:其操做數能夠爲浮點數,通常使用整數,結果是餘數,餘數符號和左邊操做數相同。class

一元運算符

一元運算符是該類運算只須要一個操做數的時候,好比:++,--效率

int a = 2;
    int b = a++; //先是執行,b = 3,而後運算完之後再給a自增。
    System.out.println("a=" + a + "\tb=" + b);
    //運行結果:a=3  b=2
    
    a = 2;
    b = ++a; //先是執行a的自增,而後再賦值給b
    System.out.println("a=" + a + "\tb=" + b);
    //運行結果:a=3  b=3

賦值運算符

int a = 2;
    int b = 3;
    a+=b;       //這個至關於a = a + b;
    System.out.println("a=" + a);
    //結果爲:a = 5
    
    a = 2;
    a *= b + 3;     //這個至關於 a = a * (b + 3)
    //是先運算後面的,再運算前面的
    System.out.println("a=" + a);
    //結果爲:a = 12;

關係運算符

關係運算符號是用來比較的,因此返回值只會是boolean,只有true/false
數據類型

int a = 2;
    int b = 3;
    boolean c = b > a;
    System.out.println("c="+c);
    //結果爲:c=true

注意事項:引用

  • == 和 != 是全部類型,引用和基本數據類型均可以用的。
  • .>、<、>=、<=只是針對於數值類型,還有char可使用。

邏輯運算符


Java中邏輯運算符的操做數和結果都是boolean類型的。二進制

boolean a = true;
    boolean b = false;
    //邏輯與 &
    //只有同時爲true的時候才返回true,只要有一個爲false,返回false
    boolean c = a & b;
    System.out.println("c=" + c);
    //結果爲:c=false;

    //邏輯或 |
    //只要有一個值爲true,結果就爲true
    c = a | b;
    System.out.println("c=" + c);
    //結果爲:c=true

    //邏輯非
    //取a的相返的值,若是a爲true,c則爲false,若是a爲false,c則爲true
    c = !a;
    System.out.println("c=" + c);
    //結果爲:c=false;

    //邏輯異或
    //兩個值相同的時候爲false,不一樣的時候爲true
    c = a ^ b;
    System.out.println("c=" + c);
    //結果爲:true

    //短路或
    //由於邏輯或只要有一個值爲true,結果就爲true,可是仍是爲驗證第二個值
    //短路或不同,只要第一個值爲true,第二個值就不驗證了,直接返回true,這樣作是爲了提升效率。
    c = a || b;
    System.out.println("c=" + c);
    //結果爲:c=true

    //短路與
    //由於邏輯與必須兩個都爲true,結果才爲true,只要有一個爲false結果就爲false
    //短路與不同,只要第一個值爲false,結果就爲false,第二個值就不驗證了,這樣作是爲了提升效率。
    c = b && a;
    System.out.println("c=" + c);
    //結果爲:false

位運算符


位運算符是進行二進制運算的。

int a = 3;
    int b = 4;

    //取返操做
    System.out.println("~a=" + ~a);
    //結果爲:~a=-4

    //按位與
    System.out.println("a&b=" + (a&b));
    //3的後四位二進制爲 0011
    //4的後四位二進制爲 0100
    //與 運算符是相同的爲 1 不一樣的爲 0 因此最後的結果爲 0000
    //結果爲:a&b = 0

    //按位或
    System.out.println("a|b=" + (a|b));
    //3的後四位二進制爲 0011
    //4的後四位二進制爲 0100
    //或 運算符是隻要有一個爲1,就爲1 因此結果爲 0111
    //結果爲:a|b = 7

    //按位異或
    System.out.println("a^b=" + (a^b));
    //3的後四位二進制爲 0011
    //4的後四位二進制爲 0100
    //異或 運算符是不一樣的爲1,相同的爲0 因此最後結果爲 0111
    //結果爲:a^b = 7

    //左移運算符 <<
    //這個運算符的右邊是要移運的位數,左邊纔是要運算的值
    System.out.println("a<<1=" + (a << 1));
    //向左邊移動一位數是把a乘以2 , 因此結果是 3 * 2
    //結果爲:6

    //右移運算符 <<
    //這個運算符的右邊是要移運的位數,左邊纔是要運算的值
    System.out.println("a>>1=" + (a >> 1));
    //向右邊移動一位數是把a除以2 , 因此結果是 3 / 2
    //結果爲應該爲1.5的,可是由於是整數運算,算動取整,因此才爲1
    //結果爲:a>>1=1
    System.out.println("b>>1=" + (b >> 1));
    //結果爲:b>>1=2

& 、| 、^ 運算符:若是運算符,若是運算兩邊是boolean類型的值,那麼這三個運算符就是邏輯運算符,若是是數值類型的,就是位運算符號。

字符串鏈接符

在咱們前面的例子中,咱們使用了 + 號,可是有的地方的 + 號不參與運算,是由於,這個時候, + 號變成了一個鏈接符號了,它變成鏈接符號的條件是 左右兩邊只要有一個String 類型的字符串,就會變成鏈接符號。

int a = 2;
    //這裏的3爲字符串,由雙引號引發來的都是字符串
    System.out.println(a + "3");
    //結果爲:23

條件運算符

條件運算符號也叫三目條件運算符號。格式爲:

x ? y : z

  這個運算表達式,有三個參數,x只能爲boolean,另外兩個參數能夠爲任意類型。

boolean a = true;
    boolean b = false;
    System.out.println("第一個參數爲true="+(a?"輸出爲true":"輸出爲false"));
    System.out.println("第一個參數爲false="+(b?"輸出爲true":"輸出爲false"));
    //結果爲:
    //第一個參數爲true=輸出爲true
    //第一個參數爲false=輸出爲false

這個三目運算符能夠作一些小的判斷,可是若是是狀況複雜的最好仍是用if else來進行計算。

運算符優先問題


  運算符的優先級不用特意的記,只要看看就能夠了,由於工做的時候,複雜的運算符號,都會有小括號來進行組織的。不會全都按照運算符號優先級來進行設計。





細節決定成敗!

我的愚見,若有不對,懇請扶正!
相關文章
相關標籤/搜索