4.2.2 Chuyển đổi kiểu dữ liệu ngầm định (Implicit conversions)

Hãy xem một số ví dụ sau →

Như bạn đã biết, chuyển đổi ngầm định có thể xảy ra mà không cần bạn yêu cầu. Trình biên dịch quyết định nơi chúng cần được thực hiện. Tất nhiên, chúng ta cần phải nhận thức được điều này, và chúng ta cần phải tìm ra tất cả các trường hợp có thể gây việc trình biên dịch chuyển đổi dữ liệu của chúng ta một cách tự động.

Chúng tôi có thể nói rằng chuyển đổi kiểu dữ liệu ngầm định tác động đến dữ liệu của các kiểu cơ bản và thường liên quan đến việc thay đổi cách biểu diễn bên trong. Loại chuyển đổi này xảy ra khi bạn gán giá trị, ví dụ: gán giá trị int cho kiểu float hoặc float cho kiểu long hoặc double cho kiểu int. Có rất nhiều các kết hợp có thể xảy ra.

Hãy liệt kê một số bối cảnh mà việc chuyển đổi dữ liệu ngầm định đóng một vai trò quan trọng:

  • Một giá trị được sử dụng như một phần của một biểu thức phức tạp được xây dựng từ nhiều giá trị khác kiểu dữ liệu (xem example no. 1 → biến Short được chuyển thành kiểu int để tương thích với biến Int)
  • Một giá trị đóng vai trò của một điều kiện logic, được đặt trong lệnh if, while, do... (xem  example no. 2 → biến  Double đã được chuyển đổi thành int để có thể sử dụng cho việc điều khiển nhánh thực thi)
  • Một giá trị được gán và được sử dụng để:
    • Thay đổi giá trị của một biến (example no. 3 →  int được chuyển thành float)
    • Thiết lập giá trị của một tham số hình thức (example no. 4   tham số thực tế có kiểu float được chuyển thành tham số chính thức kiểu int)
    • Chỉ định giá trị trả về của một hàm (example no. 5 →  giá trị của kiểu int được trả về bởi hàm có kiểu trả về được chỉ định là float)