JavaScript is required

Cho đoạn mã như bên dưới. Hãy cho biết dòng nào không thể biên dịch
Object ob = new Object();
String stringarr[] = new String[50]
Float floater = new Float(3.14f);
ob = stringarr;
ob = stringarr[5]
floater = ob;
ob = floater;

A.

Dòng 4

B.

Dòng 5

C.

Dòng 6

D.
Dòng 7
Trả lời:

Đáp án đúng: C


Đoạn mã Java được cung cấp có một số vấn đề về kiểu dữ liệu và cách gán giá trị. Chúng ta sẽ xem xét từng dòng để xác định dòng nào gây ra lỗi biên dịch: * **Dòng 1:** `Object ob = new Object();` - Khởi tạo một đối tượng Object, hoàn toàn hợp lệ. * **Dòng 2:** `String stringarr[] = new String[50];` - Khởi tạo một mảng các chuỗi String có kích thước 50, hợp lệ. * **Dòng 3:** `Float floater = new Float(3.14f);` - Khởi tạo một đối tượng Float, hợp lệ. * **Dòng 4:** `ob = stringarr;` - Gán một mảng String cho một biến Object. Vì mọi mảng đều là một Object trong Java, nên việc gán này là hợp lệ (tính đa hình). * **Dòng 5:** `ob = stringarr[5];` - Gán một phần tử String từ mảng `stringarr` cho biến `ob`. Vì String là một Object, việc gán này là hợp lệ. * **Dòng 6:** `floater = ob;` - Cố gắng gán một đối tượng Object (mà hiện tại có thể đang giữ một String hoặc một Object khác) cho một biến Float. Điều này không hợp lệ vì Java không cho phép gán một đối tượng Object tùy ý cho một kiểu dữ liệu cụ thể như Float mà không có ép kiểu rõ ràng. **Đây là dòng gây ra lỗi biên dịch**. * **Dòng 7:** `ob = floater;` - Gán một đối tượng Float cho một biến Object, hợp lệ vì Float là một Object. Vậy, dòng 6 gây ra lỗi biên dịch vì không thể gán một đối tượng Object (mà bản chất thật sự của nó chưa chắc chắn là Float) cho một biến Float mà không có ép kiểu tường minh.

Câu hỏi liên quan