
Java 教程
- Java - 首頁
- Java - 概述
- Java - 歷史
- Java - 特性
- Java 與 C++
- JVM - Java 虛擬機器
- Java - JDK 與 JRE 與 JVM
- Java - Hello World 程式
- Java - 環境設定
- Java - 基本語法
- Java - 變數型別
- Java - 資料型別
- Java - 型別轉換
- Java - Unicode 系統
- Java - 基本運算子
- Java - 註釋
- Java - 使用者輸入
- Java - 日期和時間
Java 控制語句
- Java - 迴圈控制
- Java - 決策制定
- Java - If-else
- Java - Switch
- Java - For 迴圈
- Java - For-Each 迴圈
- Java - While 迴圈
- Java - do-while 迴圈
- Java - Break
- Java - Continue
面向物件程式設計
- Java - OOPs 概念
- Java - 物件和類
- Java - 類屬性
- Java - 類方法
- Java - 方法
- Java - 變數作用域
- Java - 建構函式
- Java - 訪問修飾符
- Java - 繼承
- Java - 聚合
- Java - 多型
- Java - 重寫
- Java - 方法過載
- Java - 動態繫結
- Java - 靜態繫結
- Java - 例項初始化塊
- Java - 抽象
- Java - 封裝
- Java - 介面
- Java - 包
- Java - 內部類
- Java - 靜態類
- Java - 匿名類
- Java - 單例類
- Java - 包裝類
- Java - 列舉
- Java - 列舉建構函式
- Java - 列舉字串
Java 內建類
Java 檔案處理
Java 錯誤和異常
- Java - 異常
- Java - try-catch 塊
- Java - try-with-resources
- Java - 多重捕獲塊
- Java - 巢狀 try 塊
- Java - Finally 塊
- Java - throw 異常
- Java - 異常傳播
- Java - 內建異常
- Java - 自定義異常
Java 多執行緒
- Java - 多執行緒
- Java - 執行緒生命週期
- Java - 建立執行緒
- Java - 啟動執行緒
- Java - 執行緒連線
- Java - 執行緒命名
- Java - 執行緒排程器
- Java - 執行緒池
- Java - 主執行緒
- Java - 執行緒優先順序
- Java - 守護執行緒
- Java - 執行緒組
- Java - 關閉鉤子
Java 同步
Java 網路
- Java - 網路
- Java - 套接字程式設計
- Java - URL 處理
- Java - URL 類
- Java - URLConnection 類
- Java - HttpURLConnection 類
- Java - Socket 類
- Java - 泛型
Java 集合
Java 介面
Java 資料結構
Java 集合演算法
高階 Java
- Java - 命令列引數
- Java - Lambda 表示式
- Java - 傳送電子郵件
- Java - Applet 基礎
- Java - Javadoc 註釋
- Java - 自動裝箱和拆箱
- Java - 檔案不匹配方法
- Java - REPL (JShell)
- Java - 多版本 Jar 檔案
- Java - 私有介面方法
- Java - 內部類菱形運算子
- Java - 多解析度影像 API
- Java - 集合工廠方法
- Java - 模組系統
- Java - Nashorn JavaScript
- Java - Optional 類
- Java - 方法引用
- Java - 函式式介面
- Java - 預設方法
- Java - Base64 編碼解碼
- Java - Switch 表示式
- Java - Teeing 收集器
- Java - 微基準測試
- Java - 文字塊
- Java - 動態 CDS 存檔
- Java - Z 垃圾收集器 (ZGC)
- Java - 空指標異常
- Java - 打包工具
- Java - 密封類
- Java - 記錄類
- Java - 隱藏類
- Java - 模式匹配
- Java - 簡潔數字格式化
- Java - 垃圾回收
- Java - JIT 編譯器
Java 雜項
- Java - 遞迴
- Java - 正則表示式
- Java - 序列化
- Java - 字串
- Java - Process API 增強
- Java - Stream API 增強
- Java - 增強 @Deprecated 註釋
- Java - CompletableFuture API 增強
- Java - 流
- Java - 日期時間 API
- Java 8 - 新特性
- Java 9 - 新特性
- Java 10 - 新特性
- Java 11 - 新特性
- Java 12 - 新特性
- Java 13 - 新特性
- Java 14 - 新特性
- Java 15 - 新特性
- Java 16 - 新特性
Java API 和框架
Java 類參考
- Java - Scanner
- Java - 陣列
- Java - 字串
- Java - Date
- Java - ArrayList
- Java - Vector
- Java - Stack
- Java - PriorityQueue
- Java - LinkedList
- Java - ArrayDeque
- Java - HashMap
- Java - LinkedHashMap
- Java - WeakHashMap
- Java - EnumMap
- Java - TreeMap
- Java - IdentityHashMap
- Java - HashSet
- Java - EnumSet
- Java - LinkedHashSet
- Java - TreeSet
- Java - BitSet
- Java - Dictionary
- Java - Hashtable
- Java - Properties
- Java - Collection
- Java - Array
Java 有用資源
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 |
Java 關係運算符
Java 語言支援以下關係運算符。
假設變數 A 保持 10,變數 B 保持 20,則 -
運算子 | 描述 | 示例 |
---|---|---|
== (等於) | 檢查兩個運算元的值是否相等,如果相等則條件為真。 | (A == B) 為假。 |
!= (不等於) | 檢查兩個運算元的值是否相等,如果值不相等則條件為真。 | (A != B) 為真。 |
> (大於) | 檢查左運算元的值是否大於右運算元的值,如果大於則條件為真。 | (A > B) 為假。 |
< (小於) | 檢查左運算元的值是否小於右運算元的值,如果小於則條件為真。 | (A < B) 為真。 |
>= (大於或等於) | 檢查左運算元的值是否大於或等於右運算元的值,如果大於或等於則條件為真。 | (A >= B) 為假。 |
<= (小於或等於) | 檢查左運算元的值是否小於或等於右運算元的值,如果小於或等於則條件為真。 | (A <= B) 為真。 |
Java 按位運算子
Java 定義了幾個按位運算子,這些運算子可以應用於整數型別、long、int、short、char 和 byte。
按位運算子作用於位並執行逐位操作。假設如果 a = 60 且 b = 13;現在以二進位制格式,它們將如下所示 -
a = 0011 1100 b = 0000 1101 a&b = 0000 1100 a|b = 0011 1101 a^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 |
⁓ (按位取反) | 二進位制一補碼運算子是單目運算子,其作用是“翻轉”位。 | (⁓A ) 將得到 -61,由於帶符號二進位制數,因此在 2 的補碼形式中為 1100 0011。 |
<< (左移) | 二進位制左移運算子。左運算元的值向左移動由右運算元指定的位數。 | A << 2 將得到 240,即 1111 0000 |
>> (右移) | 二進位制右移運算子。左運算元的值向右移動右運算元指定的位數。 | A >> 2 將得到 15,即 1111 |
>>>(零填充右移) | 右移零填充運算子。左運算元的值向右移動右運算元指定的位數,並且移位的數值用零填充。 | A >>> 2 將得到 15,即 0000 1111 |
Java 邏輯運算子
下表列出了邏輯運算子:
假設布林變數 A 為真,變數 B 為假,則:
運算子 | 描述 | 示例 |
---|---|---|
&&(邏輯與) | 稱為邏輯與運算子。如果兩個運算元都不為零,則條件為真。 | (A && B) 為假 |
||(邏輯或) | 稱為邏輯或運算子。如果兩個運算元中任何一個不為零,則條件為真。 | (A || B) 為真 |
!(邏輯非) | 稱為邏輯非運算子。用於反轉其運算元的邏輯狀態。如果條件為真,則邏輯非運算子將使其為假。 | !(A && B) 為真 |
賦值運算子
以下是 Java 語言支援的賦值運算子:
運算子 | 描述 | 示例 |
---|---|---|
= | 簡單賦值運算子。將右側運算元的值賦給左側運算元。 | 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 等價於 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 |
Java 其他運算子
Java 語言還支援一些其他運算子。
條件運算子(? :)
條件運算子也稱為**三元運算子**。此運算子包含三個運算元,用於評估布林表示式。運算子的目標是確定應將哪個值賦給變數。運算子寫成:
variable x = (expression) ? value if true : value if false
示例
以下是一個示例:
在此示例中,我們建立了兩個變數 a 和 b,並使用**三元運算子**確定了 b 的值並打印出來。
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 : 30 Value of b is : 20
instanceof 運算子
此運算子僅用於物件引用變數。運算子檢查物件是否為特定型別(類型別或介面型別)。instanceof 運算子寫成:
( Object reference variable ) instanceof (class/interface type)
如果運算子左側變數引用的物件透過右側類/介面型別的 IS-A 檢查,則結果將為真。以下是一個示例:
示例
在此示例中,我們建立了一個 String 型別的變數 name,然後使用**instanceof 運算子**檢查 name 是否為 String 型別。
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
如果正在比較的物件與右側的型別賦值相容,則此運算子仍將返回真。以下是一個示例:
示例
在此示例中,我們建立了一個 Vehicle 類型別的變數 a,然後使用**instanceof 運算子**檢查 name 是否為 Car 型別。
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 中。
在此,優先順序最高的運算子出現在表的最上方,優先順序最低的運算子出現在表的最下方。在表示式中,優先順序較高的運算子將首先計算。
類別 | 運算子 | 結合性 |
---|---|---|
字尾 | expression++ expression-- | 從左到右 |
一元 | ++expression --expression +expression -expression ⁓ ! | 從右到左 |
乘法 | * / % | 從左到右 |
加法 | + - | 從左到右 |
移位 | << >> >>> | 從左到右 |
關係 | < > <= >= instanceof | 從左到右 |
相等 | == != | 從左到右 |
按位與 | & | 從左到右 |
按位異或 | ^ | 從左到右 |
按位或 | | | 從左到右 |
邏輯與 | && | 從左到右 |
邏輯或 | || | 從左到右 |
條件 | ?: | 從右到左 |
賦值 | = += -= *= /= %= ^= |= <<= >>= >>>= | 從右到左 |