首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 基礎:byte[] 與 Byte[] 轉換陷阱與自動裝箱

     編輯:程式設計綜合問答

錯誤現象

byte[] bytes = ...;
Byte[] objects = bytes; // 編譯錯誤:Type mismatch

根本原因

  • byte[] 是**基本類型陣列**,存儲連續的 8 位元值。
  • Byte[] 是**物件陣列**,每個元素指向一個 java.lang.Byte 物件(堆上分配)。
  • Java **不支援**基本類型陣列與包裝類陣列之間的隱式轉換。

正確轉換方式

手動迴圈(效能最佳)

Byte[] objects = new Byte[bytes.length];
for (int i = 0; i < bytes.length; i++) {
    objects[i] = bytes[i]; // 自動裝箱
}

串流 API(Java 8+,可讀性佳)

Byte[] objects = Arrays.stream(bytes)
    .boxed()
    .toArray(Byte[]::new);

第三方庫

// Apache Commons Lang
Byte[] objects = ArrayUtils.toObject(bytes);

效能提示

高頻呼叫場景避免裝箱開銷,直接使用 byte[] 或 ByteBuffer;必須用 Byte[] 時(如泛型 API),預先分配陣列並手動填充最快。

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