Lớp Wrapper (Class Wrapper) Trong Java | Autoboxing và
Unboxing
Trong ngôn ngữ lập trình Java, lớp Wrapper đóng vai trò quan trọng trong việc
hỗ trợ chuyển đổi giữa các kiểu dữ liệu nguyên thủy và các đối tượng. Hai khái
niệm liên quan mật thiết đến lớp Wrapper là Autoboxing và Unboxing. Bài
viết này sẽ giải thích chi tiết về lớp Wrapper, cách hoạt động
của Autoboxing và Unboxing, cùng với các ví dụ minh họa và ứng dụng thực
tế.
Lớp Wrapper trong Java là gì?
Lớp Wrapper trong Java là gì?
Lớp Wrapper trong Java là các lớp được sử dụng để "bọc" (wrap) các kiểu dữ
liệu nguyên thủy (primitive types) như int, double, char, v.v., thành các đối
tượng. Điều này cần thiết vì trong một số trường hợp, Java yêu cầu sử dụng các
đối tượng thay vì kiểu dữ liệu nguyên thủy, ví dụ như khi làm việc với các
Collection Framework như ArrayList hay HashMap.
Dưới đây là danh sách các lớp Wrapper tương ứng với các kiểu dữ liệu nguyên
thủy:
Vai trò của lớp Wrapper
1. Chuyển đổi kiểu dữ liệu: Lớp Wrapper cung cấp các phương thức để
chuyển đổi giữa kiểu nguyên thủy và đối tượng, hoặc giữa các định dạng
như chuỗi (String) và số.
2. Sử dụng trong Collection Framework: Các lớp như ArrayList chỉ chấp
nhận các đối tượng, do đó lớp Wrapper giúp lưu trữ các kiểu dữ liệu
nguyên thủy dưới dạng đối tượng.
3. Cung cấp phương thức tiện ích: Các lớp
Wrapper như Integer hoặc Double có các phương thức hỗ trợ
như parseInt(), toString(), giúp xử lý dữ liệu dễ dàng hơn.
Autoboxing trong Java
Autoboxing là quá trình tự động chuyển đổi từ kiểu dữ liệu nguyên thủy
sang lớp Wrapper tương ứng. Quá trình này được Java thực hiện ngầm, giúp
lập trình viên tiết kiệm thời gian và mã lệnh.
Ví dụ về Autoboxing
Integer number = 10; // Autoboxing: int được tự động chuyển thành Integer
ArrayList<Integer> list = new ArrayList<>();
list.add(5); // Autoboxing: 5 (int) được chuyển thành Integer
Trong ví dụ trên, giá trị 10 kiểu int được tự động chuyển thành đối
tượng Integer mà không cần gọi phương thức như Integer.valueOf(10).
Khi nào Autoboxing xảy ra?
 Khi gán một kiểu nguyên thủy cho một biến kiểu lớp Wrapper.
 Khi truyền một kiểu nguyên thủy vào phương thức yêu cầu đối tượng lớp
Wrapper.
 Khi thêm kiểu nguyên thủy vào các Collection như ArrayList, HashMap.
Unboxing trong Java
Ngược lại với Autoboxing, Unboxing là quá trình tự động chuyển đổi từ đối
tượng lớp Wrapper về kiểu dữ liệu nguyên thủy tương ứng.
Ví dụ về Unboxing
Integer number = new Integer(20);
int value = number; // Unboxing: Integer được chuyển thành int
Trong ví dụ trên, đối tượng Integer được tự động chuyển thành kiểu int mà
không cần gọi phương thức như number.intValue().
Khi nào Unboxing xảy ra?
 Khi gán một đối tượng lớp Wrapper cho một biến kiểu nguyên thủy.
 Khi thực hiện các phép toán số học với đối tượng lớp Wrapper.
 Khi truyền đối tượng lớp Wrapper vào phương thức yêu cầu kiểu nguyên
thủy.
Ví dụ minh họa Autoboxing và Unboxing
Dưới đây là một chương trình minh họa cả Autoboxing và Unboxing:
import java.util.ArrayList;
public class WrapperExample {
public static void main(String[] args) {
// Autoboxing
Integer num = 100; // int -> Integer
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(200); // int -> Integer
// Unboxing
int value = num; // Integer -> int
int sum = numbers.get(0) + 50; // Integer -> int, sau đó thực hiện phép cộng
System.out.println("Giá trị của num: " + value);
System.out.println("Tổng: " + sum);
}
}
Kết quả:
Giá trị của num: 100
Tổng: 250
Ưu điểm và nhược điểm của Autoboxing và Unboxing
Ưu điểm
 Tiện lợi: Autoboxing và Unboxing giúp giảm mã lệnh thủ công, tăng
tính dễ đọc.
 Tương thích với Collection: Cho phép sử dụng kiểu nguyên thủy trong
các cấu trúc dữ liệu chỉ chấp nhận đối tượng.
 Tăng tính linh hoạt: Dễ dàng chuyển đổi giữa kiểu nguyên thủy và đối
tượng.
Nhược điểm
 Hiệu suất: Autoboxing và Unboxing có thể làm giảm hiệu suất vì tạo ra
các đối tượng mới.
 Nguy cơ NullPointerException: Khi Unboxing một đối tượng lớp
Wrapper có giá trị null, chương trình sẽ gặp lỗi.
Ví dụ lỗi NullPointerException:
Integer number = null;
int value = number; // Gây ra NullPointerException
Ứng dụng thực tế của lớp Wrapper
1. Xử lý dữ liệu đầu vào: Lớp Wrapper thường được sử dụng để chuyển
đổi chuỗi nhập từ người dùng thành kiểu dữ liệu số (ví
dụ: Integer.parseInt()).
2. Lưu trữ trong Collection: Các cấu trúc như ArrayList, HashMap sử
dụng lớp Wrapper để lưu trữ dữ liệu.
3. Xử lý đa luồng: Lớp Wrapper cung cấp các phương thức an toàn cho
việc xử lý dữ liệu trong môi trường đa luồng.
Kết luận
Lớp Wrapper, Autoboxing, và Unboxing là những khái niệm quan trọng
trong Java, giúp lập trình viên làm việc linh hoạt hơn giữa kiểu dữ liệu nguyên
thủy và đối tượng. Hiểu rõ cách hoạt động của chúng không chỉ giúp viết mã
hiệu quả mà còn tránh được các lỗi không mong muốn
như NullPointerException. Hy vọng bài viết này đã cung cấp cái nhìn toàn diện
về các khái niệm này.
Tìm hiểu lớp Wrapper trong Java – Cách các kiểu dữ liệu nguyên thủy
được chuyển thành đối tượng thông qua Autoboxing và Unboxing.
🌐 Website: Java Highlight
#JavaHighlight #WrapperClass #Autoboxing #Unboxing #JavaBasics
#LapTrinhJava #JavaLearning #JavaTutorial

More Related Content

PPT
On thitotnghiep
PPT
BáO CáO Lý ThuyếT Java
DOCX
PPTX
Học PHP cơ bản - Tìm hiểu về mảng trong PHP ( CH001 - Bài 1.1)
DOC
Core java 3
 
PPT
Val
PDF
Hướng dẫn lập trình quản lý c#
DOCX
Từ Khóa Static trong Java | Hiểu và Sử Dụng Hiệu Quả.docx
On thitotnghiep
BáO CáO Lý ThuyếT Java
Học PHP cơ bản - Tìm hiểu về mảng trong PHP ( CH001 - Bài 1.1)
Core java 3
 
Val
Hướng dẫn lập trình quản lý c#
Từ Khóa Static trong Java | Hiểu và Sử Dụng Hiệu Quả.docx

Similar to Lớp Wrapper (Class Wrapper) Trong Java | Autoboxing và Unboxing (14)

DOCX
Toán Tử instanceof trong Java | Kiến Thức Cơ Bản
DOCX
Tính Đa Hình (Polymorphism) trong Java | Giải Thích và Ví Dụ
PDF
Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT
PDF
Tai lieu huong_dan_ve_lap_trinh_php_7512
PPT
Chuong 03-lop-kieudulieutruutuong
DOC
Core java 9
 
PDF
Chuong 04 ham
DOC
Core java 4
 
DOC
Core java 7
 
PDF
CoreJava_Chap9
DOCX
Lappj trình hướng đối tượng
PDF
C fast food
PDF
C# coban
PPT
Lap trinh java hieu qua
Toán Tử instanceof trong Java | Kiến Thức Cơ Bản
Tính Đa Hình (Polymorphism) trong Java | Giải Thích và Ví Dụ
Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT
Tai lieu huong_dan_ve_lap_trinh_php_7512
Chuong 03-lop-kieudulieutruutuong
Core java 9
 
Chuong 04 ham
Core java 4
 
Core java 7
 
CoreJava_Chap9
Lappj trình hướng đối tượng
C fast food
C# coban
Lap trinh java hieu qua
Ad

More from Java Highlight (16)

DOCX
Biểu Thức Lambda (Lambda Expression) trong Java | Mã Ngắn Gọn và Dễ Hiểu
DOCX
Đệ Quy (Recursion) trong Java | Giải thích và Ứng dụng
DOCX
Truyền Giá Trị Và Tham Chiếu trong Java | Các Cách Truyền Dữ Liệu vào Phương ...
DOCX
Phương Thức equals() & hashCode() trong Java | Tìm Hiểu Chi Tiết
DOCX
Giao Diện (Interface) trong Java | Kiến Thức Cơ Bản
DOCX
Từ khóa final trong Java | Ý nghĩa và cách sử dụng hiệu quả
DOCX
Gói (Packages) trong Java | Tổ Chức Mã Nguồn và Quản Lý Không Gian Tên
DOCX
Tính Trừu Tượng (Abstraction) Trong Java | Khái Niệm và Ứng Dụng
DOCX
Từ Khóa super trong Java - Các Cách Sử Dụng và Ý Nghĩa
DOCX
Tính Kế Thừa trong Java - Sử Dụng Lại Mã và Mở Rộng Chương Trình
DOCX
Kiểm Soát Quyền Truy Cập trong Java | Tìm Hiểu và Ứng Dụng
DOCX
Tính Đóng Gói(Encapsulation) trong Java | hái Niệm và Ứng Dụng
DOCX
Lịch sử của Java - Ngôn ngữ lập trình Java
DOCX
Lớp (Class) trong Java | Kiến thức cơ bản
DOCX
Đối Tượng trong Java Hiểu và Sử Dụng Hiệu Quả.docx
DOCX
Lập Trình Hướng Đối Tượng (OOP) Trong Java.docx
Biểu Thức Lambda (Lambda Expression) trong Java | Mã Ngắn Gọn và Dễ Hiểu
Đệ Quy (Recursion) trong Java | Giải thích và Ứng dụng
Truyền Giá Trị Và Tham Chiếu trong Java | Các Cách Truyền Dữ Liệu vào Phương ...
Phương Thức equals() & hashCode() trong Java | Tìm Hiểu Chi Tiết
Giao Diện (Interface) trong Java | Kiến Thức Cơ Bản
Từ khóa final trong Java | Ý nghĩa và cách sử dụng hiệu quả
Gói (Packages) trong Java | Tổ Chức Mã Nguồn và Quản Lý Không Gian Tên
Tính Trừu Tượng (Abstraction) Trong Java | Khái Niệm và Ứng Dụng
Từ Khóa super trong Java - Các Cách Sử Dụng và Ý Nghĩa
Tính Kế Thừa trong Java - Sử Dụng Lại Mã và Mở Rộng Chương Trình
Kiểm Soát Quyền Truy Cập trong Java | Tìm Hiểu và Ứng Dụng
Tính Đóng Gói(Encapsulation) trong Java | hái Niệm và Ứng Dụng
Lịch sử của Java - Ngôn ngữ lập trình Java
Lớp (Class) trong Java | Kiến thức cơ bản
Đối Tượng trong Java Hiểu và Sử Dụng Hiệu Quả.docx
Lập Trình Hướng Đối Tượng (OOP) Trong Java.docx
Ad

Lớp Wrapper (Class Wrapper) Trong Java | Autoboxing và Unboxing

  • 1. Lớp Wrapper (Class Wrapper) Trong Java | Autoboxing và Unboxing Trong ngôn ngữ lập trình Java, lớp Wrapper đóng vai trò quan trọng trong việc hỗ trợ chuyển đổi giữa các kiểu dữ liệu nguyên thủy và các đối tượng. Hai khái niệm liên quan mật thiết đến lớp Wrapper là Autoboxing và Unboxing. Bài viết này sẽ giải thích chi tiết về lớp Wrapper, cách hoạt động của Autoboxing và Unboxing, cùng với các ví dụ minh họa và ứng dụng thực tế. Lớp Wrapper trong Java là gì? Lớp Wrapper trong Java là gì? Lớp Wrapper trong Java là các lớp được sử dụng để "bọc" (wrap) các kiểu dữ liệu nguyên thủy (primitive types) như int, double, char, v.v., thành các đối tượng. Điều này cần thiết vì trong một số trường hợp, Java yêu cầu sử dụng các đối tượng thay vì kiểu dữ liệu nguyên thủy, ví dụ như khi làm việc với các Collection Framework như ArrayList hay HashMap. Dưới đây là danh sách các lớp Wrapper tương ứng với các kiểu dữ liệu nguyên thủy:
  • 2. Vai trò của lớp Wrapper 1. Chuyển đổi kiểu dữ liệu: Lớp Wrapper cung cấp các phương thức để chuyển đổi giữa kiểu nguyên thủy và đối tượng, hoặc giữa các định dạng như chuỗi (String) và số. 2. Sử dụng trong Collection Framework: Các lớp như ArrayList chỉ chấp nhận các đối tượng, do đó lớp Wrapper giúp lưu trữ các kiểu dữ liệu nguyên thủy dưới dạng đối tượng. 3. Cung cấp phương thức tiện ích: Các lớp Wrapper như Integer hoặc Double có các phương thức hỗ trợ như parseInt(), toString(), giúp xử lý dữ liệu dễ dàng hơn. Autoboxing trong Java Autoboxing là quá trình tự động chuyển đổi từ kiểu dữ liệu nguyên thủy sang lớp Wrapper tương ứng. Quá trình này được Java thực hiện ngầm, giúp lập trình viên tiết kiệm thời gian và mã lệnh. Ví dụ về Autoboxing Integer number = 10; // Autoboxing: int được tự động chuyển thành Integer ArrayList<Integer> list = new ArrayList<>(); list.add(5); // Autoboxing: 5 (int) được chuyển thành Integer Trong ví dụ trên, giá trị 10 kiểu int được tự động chuyển thành đối tượng Integer mà không cần gọi phương thức như Integer.valueOf(10). Khi nào Autoboxing xảy ra?
  • 3.  Khi gán một kiểu nguyên thủy cho một biến kiểu lớp Wrapper.  Khi truyền một kiểu nguyên thủy vào phương thức yêu cầu đối tượng lớp Wrapper.  Khi thêm kiểu nguyên thủy vào các Collection như ArrayList, HashMap. Unboxing trong Java Ngược lại với Autoboxing, Unboxing là quá trình tự động chuyển đổi từ đối tượng lớp Wrapper về kiểu dữ liệu nguyên thủy tương ứng. Ví dụ về Unboxing Integer number = new Integer(20); int value = number; // Unboxing: Integer được chuyển thành int Trong ví dụ trên, đối tượng Integer được tự động chuyển thành kiểu int mà không cần gọi phương thức như number.intValue(). Khi nào Unboxing xảy ra?  Khi gán một đối tượng lớp Wrapper cho một biến kiểu nguyên thủy.  Khi thực hiện các phép toán số học với đối tượng lớp Wrapper.  Khi truyền đối tượng lớp Wrapper vào phương thức yêu cầu kiểu nguyên thủy. Ví dụ minh họa Autoboxing và Unboxing Dưới đây là một chương trình minh họa cả Autoboxing và Unboxing: import java.util.ArrayList; public class WrapperExample { public static void main(String[] args) { // Autoboxing Integer num = 100; // int -> Integer ArrayList<Integer> numbers = new ArrayList<>(); numbers.add(200); // int -> Integer // Unboxing int value = num; // Integer -> int int sum = numbers.get(0) + 50; // Integer -> int, sau đó thực hiện phép cộng System.out.println("Giá trị của num: " + value); System.out.println("Tổng: " + sum); } } Kết quả: Giá trị của num: 100 Tổng: 250 Ưu điểm và nhược điểm của Autoboxing và Unboxing Ưu điểm
  • 4.  Tiện lợi: Autoboxing và Unboxing giúp giảm mã lệnh thủ công, tăng tính dễ đọc.  Tương thích với Collection: Cho phép sử dụng kiểu nguyên thủy trong các cấu trúc dữ liệu chỉ chấp nhận đối tượng.  Tăng tính linh hoạt: Dễ dàng chuyển đổi giữa kiểu nguyên thủy và đối tượng. Nhược điểm  Hiệu suất: Autoboxing và Unboxing có thể làm giảm hiệu suất vì tạo ra các đối tượng mới.  Nguy cơ NullPointerException: Khi Unboxing một đối tượng lớp Wrapper có giá trị null, chương trình sẽ gặp lỗi. Ví dụ lỗi NullPointerException: Integer number = null; int value = number; // Gây ra NullPointerException Ứng dụng thực tế của lớp Wrapper 1. Xử lý dữ liệu đầu vào: Lớp Wrapper thường được sử dụng để chuyển đổi chuỗi nhập từ người dùng thành kiểu dữ liệu số (ví dụ: Integer.parseInt()). 2. Lưu trữ trong Collection: Các cấu trúc như ArrayList, HashMap sử dụng lớp Wrapper để lưu trữ dữ liệu. 3. Xử lý đa luồng: Lớp Wrapper cung cấp các phương thức an toàn cho việc xử lý dữ liệu trong môi trường đa luồng. Kết luận Lớp Wrapper, Autoboxing, và Unboxing là những khái niệm quan trọng trong Java, giúp lập trình viên làm việc linh hoạt hơn giữa kiểu dữ liệu nguyên thủy và đối tượng. Hiểu rõ cách hoạt động của chúng không chỉ giúp viết mã hiệu quả mà còn tránh được các lỗi không mong muốn như NullPointerException. Hy vọng bài viết này đã cung cấp cái nhìn toàn diện về các khái niệm này. Tìm hiểu lớp Wrapper trong Java – Cách các kiểu dữ liệu nguyên thủy được chuyển thành đối tượng thông qua Autoboxing và Unboxing. 🌐 Website: Java Highlight #JavaHighlight #WrapperClass #Autoboxing #Unboxing #JavaBasics #LapTrinhJava #JavaLearning #JavaTutorial