Lớp Wrapper trong Java - Khái niệm lập trình viên Java phải biết
13/05/2021 01:42
Trong bài viết này T3H sẽ cùng bạn thảo luận về khái niệm các lớp Wrapper trong Java với các ví dụ. Có một số lý do tại sao Lập trình viên thích lớp Wrapper thay vì một kiểu nguyên thủy; chúng ta cũng sẽ thảo luận về chúng trong bài viết này.
Java không phải là một ngôn ngữ lập trình hướng đối tượng thuần túy, lý do là nó hoạt động trên các kiểu dữ liệu nguyên thủy. Tám kiểu dữ liệu nguyên thủy int, short, byte, long, float, double, char và, boolean không phải là đối tượng. Chúng ta sử dụng các lớp trình bao bọc để sử dụng các kiểu dữ liệu này dưới dạng các đối tượng. Lớp Wrapper trong Java làm cho mã Java hoàn toàn hướng đối tượng. Ví dụ: chuyển đổi một số nguyên thành Số nguyên. Ở đây int là một kiểu dữ liệu và Integer là lớp wrapper của int.
Lớp Wrapper trong Java
Trong quá trình phát triển dự án, chúng ta thường gặp các trường hợp cần có các đối tượng thay vì các kiểu dữ liệu nguyên thủy. Để làm được điều này, Java cung cấp một khái niệm về những lớp Wrapper. Lớp Wrapper trong Java là loại lớp cung cấp một cơ chế để chuyển đổi loại dữ liệu nguyên thủy thành đối tượng và ngược lại.
Khi một lớp Wrapper được tạo ra, một tệp mới sẽ được tạo ra và ở đó, chúng ta sẽ lưu trữ các kiểu dữ liệu nguyên thủy. Đối tượng của lớp Wrapper bọc hoặc giữ kiểu dữ liệu nguyên thủy tương ứng của nó.
Quá trình chuyển đổi các kiểu dữ liệu nguyên thủy thành một đối tượng gọi là boxing. Trong khi sử dụng một lớp wrapper, bạn chỉ cần truyền giá trị của kiểu dữ liệu nguyên thủy cho phương thức khởi tạo của lớp Wrapper.
Tất cả các lớp Wrapper Byte, Short, Integer, Long, Double và Float, là các lớ con của lớp trừu tượng Number. Trong khi các lớp của Character và Boolean wrapper là các lớp con của lớp Object.
Sơ đồ dưới đây cho thấy thứ bậc của các lớp trình bọc Wrapper
Sơ đồ trên cho thấy thứ bậc của các lớp trình bọc Wrapper
Kiểu dữ liệu ban đầu |
Wrapper |
Đối số |
boolean |
Boolean |
boolean hoặc String |
byte |
Byte |
byte hoặc String |
char |
Character |
char |
int |
Integer |
int hoặc String |
float |
Float |
float, double, String |
double |
Double |
double hoặc String |
long |
Long |
long hoặc String |
short |
Short |
short hoặc String |
>>> Đọc thêm: Tệp CSV trong Java - Cách đọc tệp CSV trong Java
Tại sao lại cần sử dụng lớp Wrapper trong Java
- Các lớp Wrapper được sử dụng để cung cấp cơ chế “bọc” hoặc ràng buộc các giá trị của kiểu dữ liệu nguyên thủy vào một đối tượng. Điều này giúp các kiểu nguyên thủy hoạt động tương tự như các đối tượng và thực hiện các hoạt động dành riêng cho các đối tượng.
- Các lớp Wrapper cũng được sử dụng để cung cấp nhiều chức năng tiện ích cho các kiểu dữ liệu nguyên thủy như chuyển đổi các kiểu nguyên thủy thành các đối tượng chuỗi và ngược lại, chuyển đổi sang các cơ sở khác nhau như nhị phân, bát phân hoặc thập lục phân hoặc so sánh các đối tượng khác nhau.
- Chúng ta không thể cung cấp các giá trị null cho các kiểu dữ liệu nguyên thủy nhưng các lớp wrapper có thể là null. Vì vậy, các lớp wrapper có thể được sử dụng trong những trường hợp như vậy chúng ta sẽ cần gán giá trị null cho các kiểu dữ liệu nguyên thủy.
Ưu điểm của việc sử dụng lớp Wrapper trong Java
Serialization trong Java: Trong Serialization, chúng ta cần chuyển đổi các đối tượng thành các luồng. Nếu chúng ta có một giá trị nguyên thủy và muốn tuần tự hóa chúng thì chúng ta có thể thực hiện việc này bằng cách chuyển đổi chúng với sự trợ giúp của các lớp wrapper.
Đồng bộ hóa: Trong đa luồng, đồng bộ hóa Java hoạt động với các đối tượng
Gói java.util: Gói java,util cung cấp nhiều lớp tiện ích để xử lý các đối tượng hơn là các giá trị.
Collection Framework: Collection Framework trong Java chỉ hoạt động với các đối tượng. Tất cả các lớp của Collection Framework như ArrayList, LinkedList, Vector, HashSet,.... chỉ làm việc với đối tượng.
Đa hình: Lớp Wrapper cũng giúp đạt được đa hình trong Java.
>>> Tham khảo: Khóa học lập trình Java
Tạo đối tượng Wrapper trong Java
Chúng ta sử dụng lớp wrapper để tạo một đối tượng của lớp wrapper. Để lấy giá trị của kiểu dữ liệu, chúng ta có thể in đối tượng.
Ví dụ:
package com.techvidvan.wrapperclasses;
public class WrapperDemo
{
public static void main(String[] args)
{
Integer myInt = 10;
Double myDouble = 11.65;
Character myChar = 'T';
Boolean myBool= true;
System.out.println(myInt);
System.out.println(myDouble);
System.out.println(myChar);
System.out.println(myBool);
}
}
Output
10
11.65
T
true
Autoboxing và Unboxing trong Java
Autoboxing
Quá trình tự động chuyển đổi các kiểu dữ liệu nguyên thủy thành các đối tượng lớp Wrapper tương ứng được gọi là Autoboxing trong Java. Đây là Autoboxing vì điều này được thực hiện tự động bởi trình biên dịch Java. Ví dụ: char thành Character, int thành Integer, long thành Long, double thành Double, float thành Float, boolean thành Boolean, byte thành Byte và short thành Short.
Unboxing
Java Unboxing là quá trình ngược lại của Autoboxing. Quá trình chuyển đổi đối tượng lớp wrapper thành kiểu dữ liệu nguyên thủy tương ứng của nó được gọi là Java Unboxing.
Các phương thức của lớp Wrapper trong Java
Sau đây là danh sách một số phương thức mà tất cả các lớp con của lớp Số triển khai:
STT |
Phương thức |
Mô tả phương thức |
1 |
typeValue() |
Trả về giá trị đã chuyển đổi của đối tượng Số này thành kiểu dữ liệu được chỉ định. |
2 |
compareTo() |
Nó so sánh đối tượng Number này với đối số được chỉ định. |
3 |
equals() |
Nó kiểm tra xem đối tượng Number này có bằng với đối số được chỉ định hay không |
4 |
valueOf() |
Trả về một đối tượng Integer chứa giá trị kiểu nguyên thủy đã chỉ định. |
5 |
toString() |
Trả về một đối tượng Chuỗi chứa giá trị của một đối số kiểu Số nguyên được chỉ định. |
6 |
parseInt() |
Truy xuất kiểu dữ liệu nguyên thủy của một chuỗi được chỉ định. |
7 |
abs() |
Trả về giá trị tuyệt đối của đối số được chỉ định. |
8 |
ceil() |
Trả về số nguyên nhỏ nhất bằng hoặc lớn hơn đối số đã chỉ định ở định dạng kép. |
9 |
floor() |
Trả về số nguyên lớn nhất bằng hoặc nhỏ hơn đối số đã chỉ định ở định dạng kép. |
10 |
round() |
Trả về long hoặc int gần nhất theo kiểu trả về của phương thức. |
11 |
min() |
Trả về giá trị nhỏ hơn giữa hai đối số. |
12 |
max() |
Trả về giá trị lớn hơn giữa hai đối số. |
13 |
exp |
Trả lại e cho lũy thừa của đối số, tức là cơ số của logarit tự nhiên. |
14 |
log() |
Trả về logarit tự nhiên của đối số được chỉ định. |
15 |
pow() |
Trả về kết quả của đối số đầu tiên được nâng lên thành lũy thừa của đối số thứ hai. |
Kết luận: Lớp Wrapper trong Java rất hữu ích để chuyển đổi các kiểu dữ liệu nguyên thủy thành các đối tượng và ngược lại. Nếu đã đi đến cuối bài viết này, chắc hẳn bạn đã hiểu rõ tầm quan trọng của lớp Wrapper trong Java. Tìm hiểu thêm về Java và các ngôn ngữ lập trình khác qua các khóa học lập trình tại Viện công nghệ thông tin T3H bạn nhé!