描述符
描述符是你添加到那些定義中來改變他們的意思的關鍵詞。 Java 語言有很多描述符,包括以下這些:
public class className { // ...}private boolean myFlag;static final double weeks = 9.5;protected static final int BOXWIDTH = 42;public static void main(String[] arguments) { // body of method}可訪問描述符
Java 提供一系列可訪問描述符來設定類,變量,方法和構造器的訪問級別。四種訪問級別如下:
默認的,對封裝可見。不需要描述符。
不可訪問描述符
Java 提供一些不可訪問描述符來滿足其他功能。
基本運算符
Java 針對操控變量提供了一組豐富的運算符。我們可以將所有的Java 運算符分為如下幾組:
算術運算符在數學表達中的使用和它們在代數中的使用是相同的。下面的表格列舉了算數運算符:
假設整體變量A 有10 個,變量B 有20 個,那麼:
示例
| 運算符 | 描述 | 例子 |
|---|---|---|
| + | 加法在運算符的另一端增加 | A+B 為30 |
| - | 減法將右側的操作數從左側的操作數中減去 | A - B 為-10 |
| * | 乘法將運算符兩端的值相乘 | A * B 為200 |
| / | 除法用右側操作數除左側操作數 | B / A 為2 |
| % | 係數- 用右側操作數除左側操作數並返回馀數 | B % A 為0 |
| ++ | 增量給操作數的值增加1 | B++ 為21 |
| -- | 減量給操作數的值減去1 | B―為19 |
示例
| 運算符 | 描述 | 例子 |
|---|---|---|
| == | 檢查雙方操作數的值是否相等,如果相等那麼條件為真 | (A == B) 不為真。 |
| != | 檢查雙方操作數的值是否相等,如果不相等那麼條件為真 | (A != B) 為真。 |
| > | 檢查左側的操作數是否大於右側的操作數,如果大於那麼條件為真 | (A > B) 不為真。 |
| < | 檢查左側的操作數是否小於右側的操作數,如果小於那麼條件為真 | (A < B) 為真。 |
| >= | 檢查左側的操作數是夠大於等於右側的操作數,如果是那麼條件為真 | (A >= B) 不為真。 |
| <= | 檢查左側的操作數是否小於等於右側的操作數,如果是那麼條件為真 | (A <= B) 為真。 |
位運算符作用於二進制系統間傳輸標準,並執行按位操作。假設如果a 等於60;b 等於13;現在在二進制型式下它們就如下所示:
a = 0011 1100b = 0000 1101-----------------a&b = 0000 1100a|b = 0011 1101a^b = 0011 0001~a = 1100 0011
以下表格列舉了位運算符:
假設整數變量A 有60 個,B 有13 個那麼:
示例
| 運算符 | 描述 | 例子 |
|---|---|---|
| & | 二進制AND運算符在結果上複製一位如果在雙方操作數同時存在 | (A & B) 為12,即0000 1100 |
| | | 二進制OR運算符在結果上複製一位如果在任何一個操作數上存在 | (A | B) 為61,即0011 1101 |
| ^ | 二進制XOR 運算符複製位,如果它是設置在一個操作數上而不是兩個。 | (A ^ B) 為49, 即0011 0001 |
| ~ | 二進制補充運算符是一元的,b並有“翻轉”位的影響 | (~A ) 為-61,由於是帶符號的二進制數,那2的補位形式為1100 0011 |
| << | 二進制左移運算符。左側操作數的值根據右側操作數指定的位的數量移至左側。 | A << 2 為240 ,即1111 0000 |
| >> | 二進制右移運算符。左側操作數的值根據右側操作數指定的位的數量移至右側。 | A >> 2 為15即1111 |
| >>> | 右移補零運算符。左側操作數的值根據右側操作數指定的位的數量移至右,並且轉移的值用零補滿。 | A >>>2 為15 ,即0000 1111 |
假設布爾數學體系變量A 為真,B 為假,那麼:
示例
| 運算符 | 描述 | 例子 |
|---|---|---|
| && | 稱為邏輯與運算符。如果雙方操作數都不為零,那麼條件為真。 | (A && B) 為真. |
| || | 稱為邏輯或運算符. 如果雙方操作數其中的任何一個都不為零,那麼條件為真。 | (A || B) 為真. |
| ! | 稱為邏輯非運算符. 用作翻轉操作數的邏輯狀態。如果一個條件為真,那麼邏輯非運算符為假。 | !(A && B) 為真. |
示例
| 運算符 | 描述 | 例子 |
|---|---|---|
| = | 簡單及運算符, 將右側操作數的值賦給左側操作數 | C = A + B 會將A + B 的值賦給C |
| += | 增加及賦值運算符, 它將右側的操作數增加到左側的操作數並且結果賦給左側操作數 | C += A 同等於C = C + A |
| -= | 減去及賦值運算符,它將右側操作數從左側操作數中減去並將結果賦給左側操作數 | C -= A 同等於C = C - A |
| *= | 乘以及賦值運算符,它將右側操作數與左側相乘並將結果賦給左側操作數 | C = A 同等於C = C A |
| /= | 除以及賦值運算符,它將右側操作數除左側操作數並將結果賦給左側操作數 | C /= A 同等於C = C / A |
| %= | 係數及賦值運算符需要係數運用兩個操作數並且將結果賦給左側操作數 | C %= A is 同等於C = C % A |
| <<= | 左移和賦值運算符 | C <<= 2 同等於C = C << 2 |
| >>= | 右移和賦值運算符 | C >>= 2 同等於C = C >> 2 |
| &= | 按位和賦值運算符 | C &= 2 同等於C = C & 2 |
| ^= | 按位異或及賦值運算符 | C ^= 2 同等於C = C ^ 2 |
| |= | 按位可兼或及賦值運算符 | C |= 2 同等於C = C | 2 |
條件運算符(?:)
條件運算符同樣也被稱作為三元運算符。這種運算符由三個操作數組成,被用作評估布爾數學體系表達。這種運算符的目的是來決定哪些值應被賦予到變量上。這個運算符被寫作如下:
variable x = (expression) ? value if true : value if false
以下是示例:
public class Test { public static void main(String args[]){ int a , b; a = 10; b = (a == 1) ? 20: 30; System.out.println( "Value of b is : " + b ); b = (a == 10) ? 20: 30; System.out.println( "Value of b is : " + b ); }}這樣就會有如下結果:
Value of b is : 30Value of b is : 20
Instanceof 符
這種操作符只用於對象引用變量。這種操作符檢查對像是否是獨特類型(類型或接口類型)。 Instanceof 運算符寫為:
( Object reference variable ) instanceof (class/interface type)
如果在運算符左側的由變量所指代的對象為右側的類型或接口類型通過IS-A 檢查,那麼結果為真。以下是示例:
public class Test { public static void main(String args[]){ String name = "James"; // following will return true since name is type of String boolean result = name instanceof String; System.out.println( result ); }}這就會產出如下結果:
複製代碼代碼如下:true
這種運算符仍會返回到真如果被比較的對像是與右邊類型兼容的賦值。以下是另一個例子: class Vehicle {}public class Car extends Vehicle { public static void main(String args[]){ Vehicle a = new Car(); boolean result = a instanceof Car; System.out.println( result ); }}這樣將會產生以下的結果:
true
Java 運算符的優先級
運算符優先級決定一個表達式裡術語的分組。它影響著一個表達式如何求值。一定的運算符比其他運算符擁有更高的優先級;例如:乘法運算符比加法運算符有更高的優先級:
例如,x=7+3 2; 這裡x 被賦值為13,不是20,是因為運算符比運算符+由更高的優先級, 所以它首先運算乘法3*2, 然後再加7。
這裡,有著最高優先級的運算符在這個表格的最高一層,最低優先權的則出現在最底部。在一個表達式中,越高等級的優先權的運算符會最先被求值。
| 類 | 運算符 | 關聯性 |
|---|---|---|
| 後綴 | () [] . (dot operator) | 從左到右 |
| 一元 | ++ - - ! ~ | 從右到左 |
| 乘法的 | * / % | 從左到右 |
| 加法的 | + - | 從左到右 |
| 移位 | >> >>> << | 從左到右 |
| 關係的 | > >= < <= | 從左到右 |
| 相等 | == != | 從左到右 |
| 位與 | & | 從左到右 |
| 位異或 | ^ | 從左到右 |
| 位或 | | | 從左到右 |
| 邏輯與 | && | 從左到右 |
| 邏輯或 | || | 從左到右 |
| 有條件的 | ?: | 從右到左 |
| 賦值 | = += -= *= /= %= >>= <<= &= ^== | 從右到左 |
| 逗號 | , | 從左到右 |