
Java 教程
- Java - 首頁
- Java - 概述
- Java - 歷史
- Java - 特性
- Java 與 C++
- JVM - Java虛擬機器
- Java - JDK vs JRE vs 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 - 多重 catch 塊
- 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 - Socket 程式設計
- 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 APIs 和框架
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 基本資料型別
基本資料型別由語言預定義,並由關鍵字命名。Java 支援八種基本資料型別。以下是基本資料型別的列表:
byte 資料型別
byte 資料型別是 8 位有符號二進位制補碼整數,最小值為 -128 (-27),最大值為 127(包含)(27 -1)。
byte 變數的預設值為 0,用於節省大型陣列中的空間,這對於整數來說尤其有利,因為 byte 的大小是整數的四分之一。
示例
byte a = 100; byte b = -50;
short 資料型別
short 資料型別是 16 位有符號二進位制補碼整數,其值範圍為 -32,768 (-215) 到 32,767(包含)(215 -1)。與 byte 資料型別一樣,short 資料型別也有利於節省記憶體,因為它比整數佔用更少的空間,只有整數的一半大小。
short 變數的預設值為 0。
示例
short s = 10000; short r = -20000;
int 資料型別
int 資料型別是 32 位有符號二進位制補碼整數,其值範圍為 -2,147,483,648 (-231) 到 2,147,483,647(包含)(231 -1)。除非考慮記憶體問題,否則整數通常用作整數值的預設資料型別。
int 變數的預設值為 0。
示例
int a = 100000; int b = -200000;
long 資料型別
long 資料型別是 64 位有符號二進位制補碼整數,其值範圍為 -9,223,372,036,854,775,808 (-263) 到 9,223,372,036,854,775,807(包含)(263 -1)。當需要比 int 更寬的範圍時使用此資料型別,其預設值為 0L。
示例
long a = 100000L; long b = -200000L;
float 資料型別
float 資料型別是單精度 32 位 IEEE 754 浮點表示。它在大型浮點數陣列中特別有用,可以節省記憶體。其預設值為 0.0f。但是,需要注意的是,由於浮點運算中的舍入誤差,float 資料型別不適合用於精確值,例如貨幣。
示例
float f1 = 234.5f;
double 資料型別
double 資料型別是雙精度 64 位 IEEE 754 浮點表示,通常用作十進位制值的預設資料型別,通常是預設選擇。double 資料型別不應用於精確值,例如貨幣,其預設值為 0.0d。
示例
double d1 = 123.4;
boolean 資料型別
boolean 資料型別表示單個位的資訊,可以儲存兩種可能的值之一:true 或 false。此資料型別用於跟蹤真/假條件的簡單標誌,其預設值為 false。
示例
boolean one = true;
char 資料型別
char 資料型別是單個 16 位 Unicode 字元,它表示來自不同語言和符號的各種字元。範圍為 '\u0000'(或 0)到 '\uffff'(或 65,535 包含)。此資料型別主要用於儲存單個字元。
示例
char letterA = 'A'
基本資料型別的示例
以下示例顯示了我們上面討論的各種基本資料型別的用法。我們在數值資料型別上使用了加法運算,而 boolean 和 char 變數則按原樣列印。
public class JavaTester { public static void main(String args[]) { byte byteValue1 = 2; byte byteValue2 = 4; byte byteResult = (byte)(byteValue1 + byteValue2); System.out.println("Byte: " + byteResult); short shortValue1 = 2; short shortValue2 = 4; short shortResult = (short)(shortValue1 + shortValue2); System.out.println("Short: " + shortResult); int intValue1 = 2; int intValue2 = 4; int intResult = intValue1 + intValue2; System.out.println("Int: " + intResult); long longValue1 = 2L; long longValue2 = 4L; long longResult = longValue1 + longValue2; System.out.println("Long: " + longResult); float floatValue1 = 2.0f; float floatValue2 = 4.0f; float floatResult = floatValue1 + floatValue2; System.out.println("Float: " + floatResult); double doubleValue1 = 2.0; double doubleValue2 = 4.0; double doubleResult = doubleValue1 + doubleValue2; System.out.println("Double: " + doubleResult); boolean booleanValue = true; System.out.println("Boolean: " + booleanValue); char charValue = 'A'; System.out.println("Char: " + charValue); } }
輸出
Byte: 6 Short: 6 Int: 6 Long: 6 Float: 6.0 Double: 6.0 Boolean: true Char: A
Java 非基本(引用/物件)資料型別
非基本資料型別不是預定義的。引用資料型別是使用建構函式的類建立的。它們用於訪問物件。這些變數宣告為特定型別,不能更改。例如,Employee、Puppy 等。
以下是非基本(引用/物件)資料型別:
- 字串 (String):字串是Java中的一個類,它表示字元序列。
- 陣列 (Arrays):陣列是利用基本資料型別建立的,用於儲存多個相同型別的值。
- 類 (Classes):類是使用者自定義的資料型別,由變數和方法組成。
- 介面 (Interfaces):介面是抽象型別,用於指定一組方法。
任何引用變數的預設值都是 null。引用變數可以用來引用宣告型別或任何相容型別的任何物件。
示例
下面的例子演示了引用(或物件)資料型別。
// Creating an object of 'Animal' class Animal animal = new Animal("giraffe"); // Creating an object of 'String' class String myString = new String("Hello, World!");