Lớp Wrapper trong Java

Lớp Wrapper trong java phân phối chính sách để quy đổi kiểu tài liệu nguyên thủy thành kiểu đối tượng người dùng và từ đối tượng người dùng thành kiểu tài liệu nguyên thủy .

image

Tính năng autoboxingunboxing 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.

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

(intObj1);