首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Java 基本資料類型完整對照表:大小、範圍與無符號處理技巧

     編輯:Oracle 資料庫基礎

Java 基本類型規格 (JLS 規範固定,跨平台一致)

類型大小位數範圍 / 精度預設值
boolean1 bit (實作相關)1true / falsefalse
byte1 byte8-128 ~ 1270
short2 bytes16-32,768 ~ 32,7670
char2 bytes16\\u0000 ~ \\uFFFF (Unicode BMP)\\u0000
int4 bytes32-2,147,483,648 ~ 2,147,483,6470
float4 bytes32IEEE 754 單精度 (~7 位有效數字)0.0f
long8 bytes64-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,8070L
double8 bytes64IEEE 754 雙精度 (~15-16 位有效數字)0.0d

關鍵特性:無無符號類型

Java 所有整數類型皆為有號 (Two's Complement)。沒有 unsigned 關鍵字,範圍固定不隨硬體/OS 變化。

無符號數值處理技巧

1. byte → 無符號 int (0~255)


byte b = -1;        // 0xFF
int unsigned = b & 0xFF;  // 結果 255 (隱式轉為 int)

& 0xFF 保留低 8 位,高位補 0。結果自動提升為 int (32 位),因 byte 容不下 255。

2. short → 無符號 int (0~65535)


short s = -1;       // 0xFFFF
int unsigned = s & 0xFFFF; // 65535

3. int → 無符號 long (0~4294967295)


int i = -1;         // 0xFFFFFFFF
long unsigned = i & 0xFFFFFFFFL; // 4294967295L

4. Java 8+ 標準庫支援


// Byte/Short/Integer/Long 類別提供靜態方法
int uByte = Byte.toUnsignedInt((byte) 200);     // 200
int uShort = Short.toUnsignedInt((short) 50000); // 50000
long uInt = Integer.toUnsignedLong(-1);         // 4294967295L
long uLong = Long.toUnsignedLong(-1L);          // 18446744073709551615 (溢位,僅邏輯)

// 反向
byte b = (byte) 200;  // 編譯警告,執行時 -56
byte b2 = (byte) Integer.parseUnsignedInt("200"); // 同樣 -56

位元運算效能優勢

&、|、^、~、<<、>>、>>> 為單指令操作,比加減乘除更快,適合大量資料轉換。

與 Oracle 數值類型對應

JavaOracle 對應類型備註
byteNUMBER(3)範圍 -128~127
shortNUMBER(5)範圍 -32768~32767
intNUMBER(10)標準整數映射
longNUMBER(19)或 BIGINT (12c+)
floatBINARY_FLOAT單精度
doubleBINARY_DOUBLE雙精度,預設 NUMBER 精度更高
StringVARCHAR2 / CLOBchar[] 映射
BigDecimalNUMBER精確金融計算

常見坑點提醒

  • byte b = 200; 編譯錯誤 (超出範圍),需 byte b = (byte) 200; 存儲為 -56
  • 字串轉無符號:Integer.parseUnsignedInt("4000000000") (Java 8+)
  • char 是無號 16 位整數,可直接參與算術:'A' + 1 = 66 ('B')
  • 序列化/網路傳輸時,明確定義位元組序 (Big-Endian / Little-Endian)

雖然本文主題為 Java 基本類型,但理解「無符號處理」與「位元運算」對於處理 Oracle RAW、BLOB、網路協定解析、加密演算法等場景至關重要。Java 8+ 的 toUnsigned* 系列方法已大幅簡化此類操作。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved