Lớp bao (Wrapper)

Kiểu dữ liệu và Exceptions trong Java

Jim White

Java Developer

8 primitive của Java

8 primitive Java là kiểu dữ liệu cơ bản dùng để xây dựng mọi dữ liệu.

Kiểu dữ liệu và Exceptions trong Java

Lớp bao (Wrapper)

  • Mỗi kiểu primitive có một lớp wrapper tương ứng
primitive Lớp Wrapper
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character

Lớp wrapper cho phép primitive được xử lý như đối tượng. Chúng là các lớp con của Object.

Kiểu dữ liệu và Exceptions trong Java

Bao primitive

  • Một instance của lớp wrapper giữ một primitive duy nhất
    • Ví dụ: Integer giữ một giá trị primitive int

Đối tượng wrapper chứa một primitive làm giá trị

Kiểu dữ liệu và Exceptions trong Java

Chi tiết về Wrapper

  • Lớp wrapper có thêm trường và phương thức
    • Trường (như giá trị tối đa) về kiểu
    • Phương thức làm việc với primitive được bao
  • Lớp wrapper thuộc ngôn ngữ nền tảng
    • Dùng không cần import (sẽ nói sau)
Kiểu dữ liệu và Exceptions trong Java

Tạo đối tượng wrapper

  • Gán một primitive cho biến kiểu wrapper
    • Cú pháp: Wrapper-type variable = primitive-value;
Integer age = 12;
Double cost = 150250.55;
Float interest = 5.5f;
Character grade = 'A';
Boolean isActive = true;
  • Đối tượng wrapper cũng có thể không có giá trị (null)
Integer age = null;
Kiểu dữ liệu và Exceptions trong Java

Dùng đối tượng wrapper

Integer age = 12;
  • In ra chúng
    System.out.println(age);    // Hiển thị 12
    
  • Lấy giá trị primitive
    int x = age.intValue();     // x được gán 12
    
  • Thực hiện thao tác khác
    double z = age.doubleValue();  // z là 12.0
    String y = age.toString();  // y được gán "12"
    Integer teenAge = 16;
    int smaller = age.compareTo(teenAge);  // smaller là -1 vì 12 < 16
    
Kiểu dữ liệu và Exceptions trong Java

Phương thức static của Wrapper

  • Lớp wrapper có các phương thức static
  • Dùng để thao tác với primitive tương ứng
    int x = Integer.sum(8,12);  // x là 20
    int y = Integer.remainderUnsigned(102, 10);  // y là 2
    
  • Dùng để chuyển đổi giữa String và primitive
    int z = Integer.parseInt("123");   // z là 123;
    boolean ans = Boolean.parseBoolean("false");  // ans là false
    
1 Xem https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html để biết thêm về Integer wrapper
Kiểu dữ liệu và Exceptions trong Java

Trường static của Wrapper

Ví dụ các trường static trên lớp wrapper

System.out.println(Integer.MAX_VALUE); // Giá trị lớn nhất của int
System.out.println(Integer.MIN_VALUE); // Giá trị nhỏ nhất của int
2147483647
-2147483648
System.out.println(Boolean.TRUE); // Tương ứng với giá trị primitive true
System.out.println(Boolean.FALSE); // Tương ứng với giá trị primitive false
true
false
Kiểu dữ liệu và Exceptions trong Java

Trường static của Wrapper

Ví dụ các trường static trên lớp wrapper

System.out.println(Character.SPACE_SEPARATOR);  // Mã Unicode cho khoảng trắng ' '
System.out.println(Character.LINE_SEPARATOR); // Mã Unicode cho xuống dòng '\n'
12
13
Kiểu dữ liệu và Exceptions trong Java

Một số phương thức Wrapper hay

Phương thức Wrapper Trả về
Boolean.logicalAnd(boolean a, boolean b) boolean
Boolean.logicalOr(boolean a, boolean b) boolean
Boolean.parseBoolean(String s) boolean
Character.getNumericValue(char ch) Giá trị int Unicode của ký tự
Character.isDigit(char ch) boolean
Character.isLowerCase(char ch) boolean
Character.isWhitespace(char ch) boolean
Double.parseDouble(String s) double
Double.longValue() giá trị Double, làm tròn xuống, dạng Long
Kiểu dữ liệu và Exceptions trong Java

Vì sao dùng Wrapper?

  • Primitive không có phương thức (chỉ có toán tử)
    • Lớp wrapper có các phương thức hữu ích
      int score = Integer.parseInt("8");
      
  • Wrapper cho phép dùng primitive như đối tượng; ví dụ đưa vào collection
    • Sẽ học về collection ở Chương 2.
Kiểu dữ liệu và Exceptions trong Java

Wrapper có thể là null

  • Wrapper cho phép biến instance hoặc static của kiểu đó có giá trị null
    • Biến primitive instance hoặc static có giá trị mặc định khi chưa khởi tạo
int herAge; // age mặc định là 0
Integer hisAge = null;
if (hisAge != null) {
  // làm gì đó khi hisAge chưa được đặt
}
Kiểu dữ liệu và Exceptions trong Java

Ayo berlatih!

Kiểu dữ liệu và Exceptions trong Java

Preparing Video For Download...