Ép kiểu trong java là việc gán giá trị của một biến có kiểu tài liệu này tới biến khác có kiểu tài liệu khác, chú ý quan tâm là trong bài này chỉ nói đến ép kiểu tài liệu so với tài liệu nguyên thủy. Có 2 kiểu ép kiểu ( quy đổi kiểu ) đó là
- Ép kiểu không tường minh
- Ép kiểu tường minh
Tóm Tắt
Ép kiểu không tường minh
Việc ép kiểu thường được diễn ra một cách tự động hóa trong trường hợp biểu thức gồm nhiều toán hạng có kiểu tài liệu khác nhau. Điều này đôi lúc làm cho bạn khá kinh ngạc vì nhận được một tác dụng không theo ý muốn .
Bạn đang đọc: Ép kiểu trong Java
int two=2, three=3;
float result= 1.5 + three/two;
Kết quả nhận được của result là 2.5. Điều mà bạn mong muốn là 3.0 chứ không phải là 2.5. Kết quả 2.5 nhận được là do three
và two
là hai giá trị nguyên nên kết quả của phép chia three/two
cho ta một giá trị nguyên bằng 1 chứ không phải là 1.5. Để nói rằng kết quả của phép chia three/two
là một giá trị thực chứ không phải là một giá trị nguyên thì một trong hai toán hạng của phép chia này phải là một số thực. Do vậy ta cần phải chuyển kiểu của một trong hai toán hạng này hoặc cả hai thành số thực. Để nhận được kết quả đúng trong trường hợp này bạn cần viết như sau:
float result=1.5 + (float) three/two;
float result=1.5 + three/(float)two;
float result=1.5 +(float)three/(float)two;
Lý do mà ta viết như trên là nếu trong một phép toán có sự tham gia của nhiều toán hạng có kiểu khác nhau thì java sẽ chuyển kiểu tự động hóa cho những toán hạng một cách tự động hóa theo quy tắc sau :
Ép kiểu tường minh
Để quy đổi kiểu một cách tường minh ta sử dụng cú pháp sau :
([kiểu dữ liệu muốn chuyển đổi]) [biểu thức];
Khi gặp câu lệnh này java sẽ tính toán giá trị của biểu thức sau đó chuyển đổi kiểu giá trị của biểu thức thành kiểu kiểu dữ liệu muốn chuyển đổi
(int) 2.5 * 2 = 4
(int) 2.5 * 2.5 = 5
(int)(2.5 * 2.5) = 6
1 + (float) 5 / 2 = 1 + 5 / (float)2 =1 + (float)5 / (float)
2 = 3.5
- Phép toán chuyển kiểu là phép toán có độ ưu tiên cao, nên (int)3.5*2(int)(3.4*2)
- Cần chú ý khi chuyển một biểu thức kiểu dữ liệu có miền giá trị lớn sang một kiểu có miền giá trị nhỏ hơn. Trong trường hợp này có thể bạn sẽ bị mất thông tin.
Source: https://final-blade.com
Category: Kiến thức Internet