Toỏn tử chuyển kiểu

Một phần của tài liệu Đề cơng bài giảng Java cơ sở (Trang 32 - 34)

Việc chuyển đổi 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. Vớ dụ ta xột đoạn trỡnh sau:

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; 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:

byte -> short -> int -> long -> float -> double

9.2. Chuyển đổi 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: (type) 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 type.

Vớ dụ:

(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

Chỳ ý:

1. 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)

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.

Một phần của tài liệu Đề cơng bài giảng Java cơ sở (Trang 32 - 34)