Tính năng autoboxing
và unboxing
chuyển đổi kiểu dữ liệu nguyên thủy thành kiểu đối tượng và từ đối tượng thành kiểu dữ liệu nguyên thủy một cách tự động từ J2SE 5.0. Sự chuyển đổi tự động kiểu dữ liệu nguyên thủy thành kiểu đối tượng được gọi là autoboxing
và ngược lại được gọi là unboxing
.
Tóm Tắt
Các lớp bao kiểu nguyên thủy (Wrapper class)
Các giá trị nguyên thủy không phải là đối tượng trong Java. Để có thể thao tác được trên các giá trị nguyên thủy (giá trị số, kí tự và logic) thì gói java.lang cung cấp các lớp bao gói (Wrapper) cho từng kiểu dữ liệu nguyên thủy (gọi tắt là lớp bao). Có 8 lớp Wrapper chúng được thiết kế trong gói java.lang
như sau
Bạn đang đọc: Lớp Wrapper trong Java
Kiểu nguyên thủy | Kiểu Wrapper |
---|---|
boolean | Boolean |
char | Character |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
chuyển kiểu tài liệu nguyên thủy thành kiểu Wrapper
public class Thaycacac {
public static void main(String args[]) {
int a = 2;
Integer i = Integer.valueOf(a);
Integer j = a;
System.out.println(a + " " + i + " " + j);
}
}
2 2 2
chuyển kiểu Wrapper thành kiểu dữ liểu nguyên thủy
public class Thaycacac {
public static void main(String args[]) {
Integer a = new Integer(9);
int i = a.intValue();
int j = a;
System.out.println(a + " " + i + " " + j);
}
}
9 9 9
Các đặc điểm của lớp Wrapper trong Java
Khởi tạo
Các lớp bao ( trừ lớp Character chỉ có một cách khởi tạo ) đều có hai cách khởi tạo :
- Các thứ nhất là sử dụng giá trị nguyên thủy để tạo ra đối tượng tương ứng
Character charObj = new Character(' a ');
Boolean boolObj = new Boolean(true);
Integer intObj = new Integer(2002);
Float floatObj = new Float(3.14 F);
Double doubleObj = new Double(3.14);
- Cách thứ 2 là chuyển thành String biểu diễn cho các giá trị nguyên thủy về các lớp tương ứng. Các toán tử này sẽ ném ra ngoại lệ
NumberFormatException
khi giá trị String truyền vào hàm tạo không hợp lệ.
Boolean boolObj = new Boolean(" true ");
Integer intObj = new Integer
(" 2002 ");
Float floatObj = new Float(" 3.14 F ");
Double doubleObj= new Double(" 3.14 ");
Có các hàm chung: valueOf(String s)
, toString()
, typeValue()
, equals()
- Mỗi lớp (trừ lớp Character) đều định nghĩa hàm static
valueOf(String s)
trả lại đối tượng tương ứng
Các hàm này ném ra ngoại lệ
NumberFormatException
khi giá trị String truyền vào phương thức không hợp lệ.
Boolean boolObj = Boolean.valueOf(" true ");
Integer intObj = Integer.valueOf(" 2002 ");
Float floatObj = Float.valueOf(" 3.14 F ");
Double doubleObj= Double.valueOf(" 3.14 ");
- Các lớp viết đè hàm
toString()
trả lại là các đối tượng String biểu diễn cho các giá trị nguyên thủy ở dạng chuỗi
String charStr = charObj.toString();
String boolStr = boolObj.toString();
String intStr = intObj.toString();
String doubleStr = doubleObj.toString();
- Các lớp định nghĩa hàm
typeValue()
trả lại các giá trị nguyên thủy tương ứng với các đối tượng nguyên thủy
boolean b = boolObj.booleanValue();
int i = intObj.intValue();
float f = floatObj.floatValueOf();
double d = doubleObj.doubleValueOf();
char c = charObj.charValue();
- Các lớp viết đè hàm
equals()
để thực hiện so sánh bằng nhau của các đối tượng nguyên thủy
Character charObj = new Character(' a ');
boolean charTest = charObj.equals(' b ');
Integer intObj1 = Integer.valueOf(" 2010 ");
boolean intTest = intObj.equals
Xem thêm: Ép kiểu dữ liệu trong lập trình C/C++
(intObj1);
Source: https://final-blade.com
Category : Kiến thức Internet