Video: Java Cơ Bản 56 Wrapper Class và Autoboxing 2025
Sự khác biệt giữa các loại nguyên thuỷ và các loại tham chiếu là một trong những tính năng gây tranh cãi nhiều nhất của Java, và các nhà phát triển thường phàn nàn về sự khác biệt giữa các giá trị nguyên thủy và các giá trị tham chiếu.
-
Mỗi loại nguyên thủy được nướng thành ngôn ngữ.
Java có tám kiểu nguyên thủy.
-
Mỗi loại tham chiếu là một lớp hoặc một giao diện.
Bạn có thể xác định loại tham chiếu của riêng bạn. Vì vậy, số lượng các loại tham chiếu trong Java có tiềm năng vô tận.
Đây là một trong những "gotchas" kiểu nguyên thủy-so với-tham chiếu: "Bạn không thể lưu một giá trị nguyên thủy trong một ArrayList. Bạn có thể viết
// THIS IS OKAY: ArrayList arrayList = new ArrayList ();
vì Chuỗi là một loại tham chiếu. Nhưng bạn không thể viết
// KHÔNG NÀY: ArrayList arrayList = new ArrayList ();
bởi vì int là một kiểu nguyên thủy. May mắn thay, mỗi loại nguyên thủy của Java có loại wrapper , loại tài liệu tham khảo có mục đích là để chứa một giá trị khác. Ví dụ, một đối tượng kiểu Integer của Java chứa một giá trị int đơn. Một đối tượng của kiểu Double của Java chứa một giá trị tăng gấp đôi. Một đối tượng kiểu Ký tự Java chứa một giá trị char đơn. Bạn không thể tạo một giá trị int ArrayList, nhưng bạn có thể tạo một giá trị ArrayList of Integer.
// Đúng là OK: ArrayList arrayList = new ArrayList ();
Mỗi tên kiểu nguyên thủy bắt đầu với một chữ cái viết thường. Mỗi tên của lớp wrapper bắt đầu với một chữ cái hoa.
Ngoài các giá trị nguyên thủy, các lớp wrapper cung cấp các phương pháp hữu ích để làm việc với các giá trị nguyên thuỷ. Ví dụ, lớp bao bọc Integer chứa parseInt và các phương thức hữu ích khác để làm việc với các giá trị int:
Chuỗi chuỗi = "17"; int số = Số nguyên. parseInt (chuỗi);
Về nhược điểm, làm việc với các lớp wrapper có thể được clumsy. Ví dụ, bạn không thể sử dụng toán tử số học với các kiểu wrapper số của Java. Đây là cách để tạo ra hai giá trị Integer và thêm chúng với nhau:
Integer myInteger = new Integer (3); Integer myOtherInteger = new Số nguyên (15); Integer sum = myInteger. intValue () + myOtherInteger. intValue ();