Biểu đồ so sánh:
Cơ sở để so sánh | Đúc kiểu | Chuyển đổi loại |
---|---|---|
Ý nghĩa | Một loại dữ liệu được người dùng gán cho một loại dữ liệu khác, sử dụng toán tử truyền sau đó được gọi là "Kiểu đúc". | Chuyển đổi một loại dữ liệu sang loại khác tự động bởi trình biên dịch được gọi là "Chuyển đổi loại". |
Áp dụng | Kiểu truyền cũng có thể được áp dụng cho hai loại dữ liệu 'không tương thích'. | Chuyển đổi loại chỉ có thể được thực hiện khi hai loại dữ liệu 'tương thích'. |
Nhà điều hành | Để truyền kiểu dữ liệu sang loại dữ liệu khác, cần phải có toán tử truyền '()'. | Không cần người vận hành. |
Kích thước của các loại dữ liệu | Loại đích có thể nhỏ hơn loại nguồn. | Ở đây loại đích phải lớn hơn loại nguồn. |
Đã thực hiện | Nó được thực hiện trong quá trình thiết kế chương trình. | Nó được thực hiện rõ ràng trong khi biên dịch. |
Loại chuyển đổi | Thu hẹp chuyển đổi. | Mở rộng chuyển đổi. |
Thí dụ | int a; byte b; ... ... b = (byte) a; | int a = 3; phao b; b = a; // giá trị trong b = 3.000. |
Định nghĩa về kiểu đúc
Việc truyền kiểu có thể được định nghĩa là, truyền một loại dữ liệu sang loại dữ liệu khác, bởi người lập trình, tại thời điểm thiết kế chương trình. Aa tự động chuyển đổi một loại dữ liệu sang loại dữ liệu khác, không phải lúc nào cũng có thể. Có thể là điều kiện 'loại đích' nhỏ hơn 'loại nguồn', vì vậy, lập trình viên phải truyền rõ ràng loại dữ liệu lớn hơn sang loại dữ liệu nhỏ hơn bằng cách sử dụng toán tử truyền '()'. Vì loại dữ liệu lớn hơn được điều chế thành loại dữ liệu nhỏ hơn, nên nó còn được gọi là 'thu hẹp chuyển đổi'.
biến đích_type = (target_type) biến / giá trị // loại mục tiêu là loại mà bạn muốn chuyển đổi loại nguồn, nó luôn luôn là loại đích.
Hãy hiểu nó với một ví dụ. Bây giờ, bạn muốn chuyển đổi loại dữ liệu 'int' thành 'byte', vì 'byte' nhỏ hơn 'int', không được phép chuyển đổi loại. Ở đây, chúng tôi đã phải chuyển đổi hoàn toàn 'int' thành 'byte' bằng cách sử dụng toán tử truyền '()'. Vì 'int' lớn hơn 'byte', kích thước của 'int' sẽ được giảm xuống phạm vi byte int int byte byte.
int a; byte b; ... ... b = (byte) a;
Khi 'float' được chuyển đổi thành 'int', kích thước của float sẽ bị cắt ngắn, vì 'int' không lưu trữ giá trị phân số. Nếu kích thước của loại đích quá nhỏ để loại nguồn phù hợp, thì loại nguồn là loại đích modulo 'phạm vi'. Việc truyền cũng có thể được áp dụng khi các kiểu dữ liệu tương thích, nên sử dụng kiểu truyền bất cứ nơi nào cần chuyển đổi loại.
Định nghĩa chuyển đổi loại
Chuyển đổi loại là chuyển đổi tự động của một loại dữ liệu sang loại khác bất cứ khi nào cần, được trình biên dịch thực hiện rõ ràng. Nhưng có hai điều kiện để được thỏa mãn trước khi chuyển đổi loại.
- Nguồn và loại đích phải tương thích.
- Loại đích phải lớn hơn loại nguồn.
Hai điều kiện này phải thỏa mãn để đạt được chuyển đổi loại và loại chuyển đổi này được gọi là 'chuyển đổi mở rộng', vì một loại nhỏ hơn được chuyển đổi sang loại lớn hơn, việc mở rộng loại xảy ra. Đối với chuyển đổi mở rộng này, các loại số như 'int', 'float' tương thích với nhau trong khi số sang char và boolean hoặc char thành boolean cũng không tương thích.
Ví dụ này sẽ cung cấp một cái nhìn tốt hơn về điều này
int a = 3; phao b; b = a; // giá trị trong b = 3.000.
Ở đây, 'int' được chuyển đổi thành 'float' lớn hơn 'int', do đó việc mở rộng loại nguồn xảy ra. Ở đây, không có toán tử đúc nào được yêu cầu vì trình biên dịch sẽ thực hiện nó một cách rõ ràng.
Sự khác biệt chính giữa kiểu đúc và chuyển đổi
- Sự khác biệt cơ bản giúp phân biệt kiểu truyền từ chuyển đổi kiểu là kiểu truyền là chuyển đổi loại này sang loại khác, được thực hiện bởi người lập trình. Mặt khác, chuyển đổi loại là chuyển đổi loại này sang loại khác, được thực hiện bởi trình biên dịch trong khi biên dịch.
- Việc truyền kiểu có thể được áp dụng cho các kiểu dữ liệu có thể không tương thích với nhau nhưng chuyển đổi kiểu chỉ có thể được áp dụng cho các kiểu dữ liệu tương thích với nhau.
- Việc chuyển đổi loại này sang loại khác trong quá trình truyền kiểu yêu cầu toán tử truyền đúc (), trong khi đó, việc chuyển đổi một loại dữ liệu sang loại khác trong chuyển đổi loại không yêu cầu bất kỳ toán tử nào.
- Trong khi chuyển đổi một loại dữ liệu sang loại khác trong kiểu truyền, loại đích có thể lớn hơn hoặc nhỏ hơn loại nguồn. Mặt khác, loại đích phải lớn hơn loại nguồn trong chuyển đổi loại.
- Việc chuyển đổi loại này sang loại khác được thực hiện trong khi mã hóa trong quá trình truyền kiểu trong khi đó, trong chuyển đổi loại, việc chuyển đổi loại này sang loại khác được thực hiện rõ ràng trong quá trình biên dịch.
- Truyền kiểu được gọi là chuyển đổi thu hẹp vì ở đây loại đích có thể nhỏ hơn loại nguồn trong khi đó, chuyển đổi loại được gọi là chuyển đổi mở rộng vì ở đây, loại đích phải lớn hơn loại nguồn.
Phần kết luận:
Có thể kết luận rằng chuyển đổi kiểu và truyền kiểu, cả hai đều thực hiện nhiệm vụ chuyển đổi một loại dữ liệu sang loại khác nhưng khác nhau theo nghĩa là việc truyền kiểu được thực hiện bởi người lập trình, sử dụng toán tử truyền '()' và chuyển đổi loại được thực hiện bởi trình biên dịch, và nó không sử dụng bất kỳ toán tử nào.