Ép kiểu trong Java

Trong lập trình ta sẽ gặp một số trường hợp là ban đầu ta khai báo biến ở kiểu dữ liệu này, nhưng sau đó ta cần chuyển nó sang kiểu dữ liệu khác để phù hợp trong tính toán. Vì vậy, bài viết này KungFu Tech sẽ hướng dẫn các bạn cách ép kiểu trong Java.

Ép kiểu trong java là việc gán giá trị của một biến có kiểu dữ liệu này tới biến khác có kiểu dữ liệu khác, chú ý là trong bài này chỉ nói đến ép kiểu dữ liệu đối với dữ liệu nguyên thủy. Có 2 kiểu ép kiểu (chuyển đổi kiểu) đó là

  • Ép kiểu không tường minh
  • Ép kiểu tường minh

É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 trong trường hợp biểu thức gồm nhiều toán hạng có kiểu dữ liệu khác nhau. Điều này đôi khi làm cho bạn khá ngạc nhiên vì nhận được một kết quả không theo ý muốn.

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 threetwo 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; // hoặc
float result=1.5 + three/(float)two; // hoặc
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 cho các toán hạng một cách tự động theo quy tắc sau:

quy tắc ép kiểu trong java

Ép kiểu tường minh

Để chuyển đổ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.
Bài trước
left Bài trước
left Các toán tử trong Java
Bài tiếp theo
Chuyển đổi kiểu dữ liệu trong Java right
Bài tiếp theo right
Avatar Techmely Team
VIẾT BỞI

Techmely Team