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