OOP trong Java (Bài trước)
(Bài tiếp) Lớp không tên

Ép kiểu, chuyển kiểu nguyên thủy Java

Việc gán một biến kiểu này bằng một giá trị có kiểu khác được hiểu là chuyển kiểu, ép kiểu (casting type).

Xem ví dụ sau:

int a = (int) 3.14;
System.out.println(a);
//Outputs 3

Code trên đã chuyển số 3.14 không phải là int thành kiểu int và gán vào a (giá trị sau khi ép kiểu là 3).

Ví dụ

double a = 42.571;
int b = (int) a;
System.out.println(b);
//Outputs 42

Java cung cấp chuyển kiểu tự động từ kiểu số nguyên sang số thực dấu chấm động mà không giảm độ chính xác giá trị, còn ngược lại số thực sang số nguyên độ chính xác của giá trị sẽ bị giảm.

Bạn thấy việc ép kiểu, chuyển kiểu được thực hiện bằng cách viết tên kiểu trước biến, giá trị (typedata)var

Do đặc tính của từng loại dữ liệu số, độ lớn mà mỗi kiểu biểu diễn được mà độ chính xác của số bị thay đổi khi chuyển ép kiểu.

Chuyển kiểu mà độ chính xác không giảm

byte⤍;shortintlongfloatdouble

Chuyển kiểu mà độ chính giảm theo chiều ngược lại

double⤍;floatlongintshortbyte

Ép kiểu, chuyển kiểu đối tượng lớp Java

Với các lớp có hai cách chuyển kiểu, chuyển kiểu ngược(Upcasting) và xuôi(Downcasting)

Ví dụ có cây kế thừa các lớp C, B, C, D như sau (B kế thừa A, C kế thừa B ...):


    A
    |--B
       |--C
          |-D

Chuyển kiểu ngược là đối tượng lớp con được chuyển về một thành kiểu một lớp cha.

Ví dụ:

A var1 = new C();

Ở trên lớp C đã tự động chuyển thành kiểu lớp A

Chuyển kiểu xuôi, tức một kiểu cha chuyển thành kiểu con. Nhớ là nó không tự động mà phải viết chính xác lớp cần ép

A var1 = new A();
D var2 = (D)var1;

Đăng ký nhận bài viết mới
OOP trong Java (Bài trước)
(Bài tiếp) Lớp không tên