Autoboxing được giới thiệu từ Java 1.5. Autoboxing và Unboxing là một cách thuận tiện cho việc chuyển đổi các kiểu dữ liệu cơ bản sang các class Java wrapper tương ứng và ngược lại
Autoboxing
Autoboxing trong Java dùng để chuyển đổi các kiểu dữ liệu cơ bản thành object của class wrapper tương ứng. Ví dụ chúng ta có thể chuyển đổi int
thành Integer
hoặc chuyển đổi long thành Long
object.
Trình biên dịch Java áp dụng Autoboxing khi giá trị là:
- Được truyền như một tham số cho một phương thức mà yêu cầu một object của class wrapper tương ứng. Ví dụ một phương thức yêu cầu tham số kiểu
Integer
có thể được gọi bằng cách truyềnint
, trình biên dịch Java sẽ tự động chuyển đổiint
thànhInteger
- Được gán cho một biến của class wrapper tương ứng. Ví dụ gán một
Long
object cho biến kiểulong
.
Unboxing
Chuyển đổi một object của kiểu wrapper thành kiểu dữ liệu cơ bản tương ứng được gọi là unboxing. Ví dụ như chuyển đổi Integer
thành int
Trình biên dịch Java áp dụng unboxing khi object của class wrapper là:
- Được truyền như một tham số cho một phương thức mà yêu cầu một giá trị của kiểu dữ liệu cơ bản tương ứng.
- Được gán cho một biến của kiểu dữ liệu cơ bản tương ứng
Ví dụ
Sau đây là ví dụ về AutoBoxing và Unboxing
import java.io.*; class GFG { public static void main (String[] args) { Integer i = new Integer(10); int i1 = i; System.out.println("Value of i: " + i); System.out.println("Value of i1: " + i1); Character gfg = 'a'; char ch = gfg; System.out.println("Value of ch: " + ch); System.out.println("Value of gfg: " + gfg); } }
Kết quả
Value of i: 10 The Value of i1: 10 Value of ch: a Value of gfg:a
Ưu điểm
- Giúp cho việc viết chú thích rõ ràng hơn
- Giúp cho chúng ta có thể sử dụng hoán đổi kiểu dữ liệu cơ bản và class wrapper mà không cần typecasting