Trong bài viết này, chúng ta sẽ cùng tìm hiểu về ép kiểu trong Java cùng với sự trợ giúp của các ví dụ dẫn chứng.
Ép kiểu
Quá trình chuyển đổi giá trị của một kiểu dữ liệu (int, float, double, v.v.) sang kiểu dữ liệu khác được gọi là ép kiểu.
Trong Java, có 13 kiểu ép. Tuy nhiên, trong bài viết này, chúng ta sẽ chỉ tập trung vào 2 loại chính.
- Ép kiểu mở rộng.
- Ép kiểu thu hẹp.
Ép kiểu mở rộng
Trong kiểu này, Java sẽ tự động chuyển đổi một kiểu dữ liệu sang kiểu dữ liệu khác.
Ví dụ:
1 2 3 4 5 6 7 8 |
class Main { public static void main(String[] args) { int a = 320; System.out.println(a); double b = a; System.out.println(b); } } |
Kết quả:
1 2 |
320 320.0 |
Trong ví dụ trên, chúng ta đang gán biến kiểu dữ liệu int có tên là a cho một biến kiểu double có tên là b. Ở đây, Java đầu tiên chuyển đổi dữ liệu kiểu int thành kiểu double. Và sau đó gán nó cho biến kiểu dữ liệu double.
Trong ép kiểu mở rộng, kiểu dữ liệu thấp hơn (có kích thước nhỏ hơn) được chuyển đổi thành kiểu dữ liệu cao hơn (có kích thước lớn hơn). Do đó không có sự mất mát dữ liệu. Đây là lý do tại sao kiểu chuyển đổi dữ liệu này được xảy ra tự động. Ngoài ra, cách ép kiểu này còn được gọi là ép kiểu ngầm định.
Ép kiểu thu hẹp
Chúng ta sẽ phải chuyển đổi theo một cách thủ công kiểu dữ liệu thứ 1 sang kiểu dữ liệu thứ 2 bằng cách sử dụng dấu ngoặc đơn.
Ví dụ:
1 2 3 4 5 6 7 8 |
class Main { public static void main(String[] args) { double a = 45.5; System.out.println(a); int b = (int) a; System.out.println(b); } } |
Kết quả:
1 2 3 |
45.5 45 |
Trong ví dụ trên, chúng ta đang gán cho biến kiểu dữ liệu double có tên là a cho một biến kiểu dữ liệu int có tên là b. Câu lệnh:
1 |
int b = (int) a; |
Ở đây, từ khóa int bên trong dấu ngoặc đơn cho biết rằng biến a được chuyển đổi thành kiểu int.
Trong ép kiểu thu hẹp, các kiểu dữ liệu cao hơn (có kích thước lớn hơn) được chuyển đổi thành các kiểu dữ liệu thấp hơn (có kích thước nhỏ hơn). Do đó sẽ xảy ra việc mất dữ liệu. Đây là lý do tại sao kiểu chuyển đổi dữ liệu này không được xảy ra tự động.
Ví dụ: chuyển đổi kiểu dữ liệu int (số nguyên) sang kiểu String (chuỗi ký tự)
1 2 3 4 5 6 7 8 |
class Main { public static void main(String[] args) { int a = 10; System.out.println(a); String b = String.valueOf(a); System.out.println(b); } } |
Kết quả:
1 2 |
10 10 |
Câu lệnh:
1 |
String b = String.valueOf(a); |
Ở đây, chúng ta đã sử dụng phương thức valueOf() của lớp String trong Java để chuyển biến kiểu dữ liệu int thành một chuỗi ký tự.
Ví dụ: Ép kiểu chuỗi ký tự sang kiểu số nguyên.
1 2 3 4 5 6 7 8 |
class Main { public static void main(String[] args) { String a = "230"; System.out.println(a); int b = Integer.parseInt(a); System.out.println(b); } } |
Kết quả:
1 2 |
230 230 |
Câu lệnh:
1 |
int b = Integer.parseInt(a); |
Ở đây, chúng ta đã sử dụng phương thức parseInt() của lớp Integer để chuyển một biến kiểu chuỗi ký tự thành một biến kiểu int (kiểu số nguyên).
Chú ý: Nếu biến kiểu String (kiểu chuỗi ký tự) không thể được chuyển đổi thành biến kiểu int (kiểu số nguyên) thì một ngoại lệ NumberFormatException sẽ được đưa ra.
Trên đây là khái niệm và ví dụ cơ bản về ép kiểu trong Java. Hy vọng mọi người có thể áp dụng vào trong chương trình của mình. Mọi người hãy tiếp tục theo dõi các bài tiếp theo và cập nhật các bài tiếp theo trên tek4 nhé!
P/s: Cảm ơn mọi người!