【本節目标】
學完本章你需要了解Java運算符有哪些以及它們的優先級,本節通過案例分析了數學運算符、關系運算符、三目(指派)運算符以及位運算符,希望學有所獲。
4.1 Java運算符
首先對于程式開發而言,裡面會提供大量的基礎運算符,那麼這些運算符也都會提供有各自的優先順序,但是一般不建議去記這些運算符的優先級。

圖一 運算符優先級
關鍵性的問題是,對于程式開發而言,強烈不建議編寫很複雜的計算。
範例:以一個程式為例
public class JavaDemo {
public static void main(String args[]) {
int x = 10 ;
int y = 20 ;
int result = x -- + y++ * -- y / x / y * ++ x - --y + y ++ ;
System.out.println(result) ; //執行結果為30
}
}
對于程式代碼而言,實際上已經告别了複雜程式邏輯時代,更多情況下是希望大家編寫一些簡單易懂的代碼。
4.2 數學運算符
在Java中數學運算都提供了一個标準的支援。包括四則運算都是支援的。
範例:實作一個簡單的四則運算
public class JavaDemo {
public static void main(String args[]) {
int result = 890234890 * ( 2902390 + 100 ) * 2 ;
System.out.println(result) ; //執行結果為886891784
}
}
在進行計算的時候,程式設計語言一般也都會提供有簡化(+=、*=、-=、/=、%=)的運算符支援。
範例:簡化運算符
public class JavaDemo {
public static void main(String args[]) {
int num = 10 ;
//num =num +20;
num += 20 ;
System.out.println(num) ; //執行結果:30
}
}
對于以上"num =num +20;"代碼,在記憶體小的時代就不适合了,是以才提供有一系列的簡化運算。
範例:求模
public class JavaDemo {
public static void main(String args[]) {
int num = 10 ;
num %= 3;
System.out.println(num) ; //執行結果:1
}
}
在數學計算裡面最頭疼的是“++”、“--”,因為這兩種運算符有兩類使用方法:
- ++變量、--變量:先進行變量的自增或自減,而後在進行數字的計算;
- 變量++、變量--:先使用變量進行計算,而後再進行自增或自減。
範例:實作自增與自減
public class JavaDemo {
public static void main(String args[]) {
int x = 10 ;
int y = 20 ;
// 1、++ x:首先x的内容要先自增1,為11;
// 2、y --:先進行計算,使用的内容是20,計算完成後自減
int result = ++ x - y -- ;
System.out.println("計算結果:" + result) ; // -9
System.out.println("x = " + x) ; // 11
System.out.println("y = " + y) ; // 19
}
}
這些代碼程式都是在當初記憶體不大的情況下提供的處理方式,但是現在來看,這種計算就較為繁瑣,尤其是在硬體成本降低的今天,這類操作如果不是必須的情況下,不建議這樣使用。
public class JavaDemo {
public static void main(String args[]) {
int x = 10 ;
int y = 20 ;
++ x ;
int result = x - y;
y -- ;
System.out.println("計算結果:" + result) ; // -9
System.out.println("x = " + x) ; // 11
System.out.println("y = " + y) ; // 19
}
}
4.3 關系運算符
關系運算符隻要特征進行大小的比較處理,包括:大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、不等(!=)、相等(==)。所有的關系運算傳回值類型為布爾型。
範例:做一個大小關系的判斷
public class JavaDemo {
public static void main(String args[]) {
int x = 10 ;
int y = 20 ;
boolean flag = x > y ; // false
System.out.println(flag) ;
}
}
在進行關系判斷的時候需要注意的是相等的判斷問題。在Java裡面“=”表示指派運算,“==”是内容相同的比較。
範例:判斷相等
public class JavaDemo {
public static void main(String args[]) {
int x = 10 ;
int y = 10 ;
boolean flag = x == y ; // true
System.out.println(flag) ;
}
}
在進行關系運算的時候可以針對所有的基本資料類型,例如:也可以直接使用字元來處理。
範例:在字元處理上使用關系運算
public class JavaDemo {
public static void main(String args[]) {
char c = '建' ;
boolean flag = 24314 == c ; // true
System.out.println(flag) ;
}
}
資料類型之間提供有轉型支援,是以在進行判斷的時候字元會自動轉為int而後進行數字的比較。
4.4 三目(指派)運算符
在進行程式開發的時候三目運算符使用的非常多,合理利用三目運算可以避免一些大範圍的程式編寫。三目運算符是所謂的指派運算處理。它是需要設定一個邏輯關系的判斷以後才可以進行的指派操作,基本文法如下:
關系運算?關系滿足時的内容:關系不滿足時的内容。
範例:判斷兩個數字的大小,将最大值儲存
public class JavaDemo {
public static void main(String args[]) {
int x = 10 ;
int y = 20 ;
// 判斷x與y的大小關系來決定最終max變量的内容
int max = x > y ? x : y ;
System.out.println(max) ; //執行結果:20
}
}
不用三目運算符去編寫同樣的程式
public class JavaDemo {
public static void main(String args[]) {
int x = 10 ;
int y = 20 ;
// 判斷x與y的大小關系來決定最終max變量的内容
int max = 0 ;
if (x > y) {
max = x ;
} else {
max = y ;
}
System.out.println(max) ; //執行結果:20
}
}
三目運算本身也可以進行嵌套處理,也就是說在指派語句位置上可以進一步吧編寫三目運算符。
範例:三目運算嵌套,将三個數字的最大值儲存下來
public class JavaDemo {
public static void main(String args[]) {
int x = 10 ;
int y = 20 ;
int z = 15 ;
int max = x > y ? (x > z ? x : z) : (y > z ? y : z) ;
System.out.println(max) ; //執行結果:20
}
}
雖然允許進行嵌套處理,但是程式的可讀性變得很差,根據實際情況判斷是否使用三目運算。
4.5 位運算符
位運算指的是可以直接進行二進制資料的計算處理,主要有:與(&)、或(|)、異或(^)、反碼(~)、移位處理。
如果要想了解位操作,則一定要清楚十進制與二進制之間的轉換處理邏輯:數字除2取餘。
你所不知道的13的二進制表示法範例:觀察與操作,如果兩位都是1結果才是1,有一位是0,結果就是0。
public class JavaDemo {
public static void main(String args[]) {
int x = 13 ;
int y = 7 ;
System.out.println(x & y) ;//執行結果:5
}
}
13的二進制:00000000000000000000000000001101
7的二進制:00000000000000000000000000000111
&計算:00000000000000000000000000000101
範例:觀察或運算,有1位是1結果就是1,2位都是0的結果才是0
public class JavaDemo {
public static void main(String args[]) {
int x = 13 ;
int y = 7 ;
System.out.println(x | y) ;//執行結果:15
}
}
|計算:00000000000000000000000000001111
在進行位運算處理的時候還可以進行移位的計算。例如:以2的3次方計算為例。
範例:移位處理
public class JavaDemo {
public static void main(String args[]) {
int x = 2 ;
System.out.println(x << 2) ;
System.out.println(x) ;
}
}
2的二進制:
00000000000000000000000000000010
向左移2位:
00000000000000000000000000001000
面試題:請解釋&和&&、|和||的差別?
&和|兩個運算符可以進行關系運算與邏輯運算;
- 在進行邏輯運算的時候所有的判斷條件都要執行;
- 在進行位運算的時候隻是針對于目前的資料進行與和或處理;
在邏輯運算上還可以使用&&、||;
- &&:在若幹個條件判斷的時候,如果前面的條件傳回了false,後續的所有條件不再判斷最終的結果就是false;
- ||:在若幹個條件判斷的時候,如果前面的條件傳回了true,後續條件不再執行最終的結果就是true;
想學習更多的Java的課程嗎?從小白到大神,從入門到精通,更多精彩不容錯過!免費為您提供更多的學習資源。
本内容視訊來源于
阿裡雲大學 下一篇:帶你學《Java程式設計入門》之五:“直線、分叉、圓圈”--程式邏輯之争 更多Java入門程式設計文章檢視此處