Trả lời:
Đáp án đúng: D
Đoạn mã được thực hiện như sau:
1. `int x = 12, y = 5, z;` Khai báo và khởi tạo các biến x = 12, y = 5. Biến z chưa được khởi tạo.
2. `z = y--;` Gán giá trị của y cho z (z = 5), sau đó giảm y đi 1 (y = 4).
3. `x += z;` Tương đương với x = x + z; x = 12 + 5 = 17.
Vậy sau khi thực hiện xong, x = 17.
Câu hỏi liên quan
Lời giải:
Đáp án đúng: C
Trong Java, một lớp (class) chỉ có thể kế thừa trực tiếp từ một lớp khác (single inheritance). Tuy nhiên, Java hỗ trợ đa kế thừa thông qua việc sử dụng Interface. Một lớp có thể implements nhiều Interface, và một Interface có thể extends nhiều Interface khác. Do đó, đáp án C là chính xác nhất: Thừa kế từ 1 lớp và 1 hay nhiều Interface.
Lời giải:
Đáp án đúng: D
Đoạn mã trên có hai lỗi:
1. Lỗi 1: Trong Java, khi sử dụng `Boolean` (đối tượng) trong câu lệnh `if`, Java sẽ tự động unboxing (chuyển đổi từ `Boolean` về `boolean`). Tuy nhiên, giá trị của `Boolean b` được khởi tạo bằng chuỗi "TRUE". Trong Java, `new Boolean(String)` chỉ trả về `true` nếu chuỗi truyền vào (không phân biệt hoa thường) là "true". Nếu không, nó sẽ trả về `false`. Như vậy, trong trường hợp này, `b` sẽ có giá trị `false`, và khối mã trong `if` sẽ không được thực thi.
2. Lỗi 2: Tương tự như trên, khi sử dụng `Integer` trong vòng lặp `for`, Java cũng thực hiện unboxing để chuyển đổi `Integer` về `int`. Điều này hoàn toàn hợp lệ và không gây ra lỗi.
Vì vậy, lỗi chính nằm ở việc sử dụng `Boolean` trong câu lệnh `if` và giá trị khởi tạo của nó, dẫn đến điều kiện `if` luôn sai. Câu lệnh `for` sử dụng `Integer` không gây ra lỗi.
Do đó, đáp án đúng nhất là B, vì lỗi nằm ở cách sử dụng `Boolean` trong câu lệnh `if` và giá trị khởi tạo của nó.
Cụ thể:
- `Boolean b = new Boolean("TRUE");` sẽ gán `false` cho `b` vì chuỗi truyền vào không phải là "true" (chú ý phân biệt hoa thường).
- `if (b)` sẽ tương đương với `if (false)`, dẫn đến khối mã bên trong `if` không được thực thi.
Câu C sai vì việc sử dụng `Integer` trong vòng lặp `for` là hợp lệ do unboxing.
Câu D sai vì chỉ có câu B đúng, còn câu C sai.
1. Lỗi 1: Trong Java, khi sử dụng `Boolean` (đối tượng) trong câu lệnh `if`, Java sẽ tự động unboxing (chuyển đổi từ `Boolean` về `boolean`). Tuy nhiên, giá trị của `Boolean b` được khởi tạo bằng chuỗi "TRUE". Trong Java, `new Boolean(String)` chỉ trả về `true` nếu chuỗi truyền vào (không phân biệt hoa thường) là "true". Nếu không, nó sẽ trả về `false`. Như vậy, trong trường hợp này, `b` sẽ có giá trị `false`, và khối mã trong `if` sẽ không được thực thi.
2. Lỗi 2: Tương tự như trên, khi sử dụng `Integer` trong vòng lặp `for`, Java cũng thực hiện unboxing để chuyển đổi `Integer` về `int`. Điều này hoàn toàn hợp lệ và không gây ra lỗi.
Vì vậy, lỗi chính nằm ở việc sử dụng `Boolean` trong câu lệnh `if` và giá trị khởi tạo của nó, dẫn đến điều kiện `if` luôn sai. Câu lệnh `for` sử dụng `Integer` không gây ra lỗi.
Do đó, đáp án đúng nhất là B, vì lỗi nằm ở cách sử dụng `Boolean` trong câu lệnh `if` và giá trị khởi tạo của nó.
Cụ thể:
- `Boolean b = new Boolean("TRUE");` sẽ gán `false` cho `b` vì chuỗi truyền vào không phải là "true" (chú ý phân biệt hoa thường).
- `if (b)` sẽ tương đương với `if (false)`, dẫn đến khối mã bên trong `if` không được thực thi.
Câu C sai vì việc sử dụng `Integer` trong vòng lặp `for` là hợp lệ do unboxing.
Câu D sai vì chỉ có câu B đúng, còn câu C sai.
Lời giải:
Đáp án đúng: C
Đoạn chương trình Java này liên quan đến việc khởi tạo đối tượng và thứ tự gọi constructor trong quan hệ kế thừa.
1. `public class S1`: Định nghĩa một lớp tên là `S1`.
2. `public static void main(String[] args)`: Phương thức `main` là điểm bắt đầu của chương trình. Bên trong `main`, một đối tượng của lớp `S2` được tạo ra: `new S2();`.
3. `S1() { System.out.print("S1"); }`: Đây là constructor của lớp `S1`. Khi một đối tượng của `S1` (hoặc một lớp con của `S1`) được tạo, constructor này sẽ in ra "S1".
4. `class S2 extends S1`: Lớp `S2` kế thừa từ lớp `S1`.
5. `S2() { System.out.print("S2"); }`: Đây là constructor của lớp `S2`. Khi một đối tượng của `S2` được tạo, constructor này sẽ in ra "S2".
Khi `new S2()` được gọi, các bước sau xảy ra:
- Đầu tiên, constructor của lớp cha (`S1`) được gọi một cách ngầm định trước khi constructor của lớp con (`S2`) được thực thi. Điều này đảm bảo rằng các thuộc tính và trạng thái của lớp cha được khởi tạo trước khi lớp con thực hiện việc khởi tạo của riêng nó.
- Do đó, "S1" được in ra từ constructor của `S1`.
- Tiếp theo, constructor của `S2` được thực thi và in ra "S2".
Kết quả là, chương trình in ra "S1S2".
1. `public class S1`: Định nghĩa một lớp tên là `S1`.
2. `public static void main(String[] args)`: Phương thức `main` là điểm bắt đầu của chương trình. Bên trong `main`, một đối tượng của lớp `S2` được tạo ra: `new S2();`.
3. `S1() { System.out.print("S1"); }`: Đây là constructor của lớp `S1`. Khi một đối tượng của `S1` (hoặc một lớp con của `S1`) được tạo, constructor này sẽ in ra "S1".
4. `class S2 extends S1`: Lớp `S2` kế thừa từ lớp `S1`.
5. `S2() { System.out.print("S2"); }`: Đây là constructor của lớp `S2`. Khi một đối tượng của `S2` được tạo, constructor này sẽ in ra "S2".
Khi `new S2()` được gọi, các bước sau xảy ra:
- Đầu tiên, constructor của lớp cha (`S1`) được gọi một cách ngầm định trước khi constructor của lớp con (`S2`) được thực thi. Điều này đảm bảo rằng các thuộc tính và trạng thái của lớp cha được khởi tạo trước khi lớp con thực hiện việc khởi tạo của riêng nó.
- Do đó, "S1" được in ra từ constructor của `S1`.
- Tiếp theo, constructor của `S2` được thực thi và in ra "S2".
Kết quả là, chương trình in ra "S1S2".
Lời giải:
Đáp án đúng: A
Đoạn chương trình Java này minh họa tính kế thừa và ghi đè biến (variable hiding).
- Lớp `Question` chứa hàm `main`. Hàm `main` tạo một đối tượng `s2` thuộc lớp `S2` và gọi phương thức `display()` trên đối tượng đó.
- Lớp `S1` có một biến `s` kiểu `String` được khởi tạo với giá trị "S1" và một phương thức `display()` in giá trị của biến `s` ra màn hình.
- Lớp `S2` kế thừa từ lớp `S1` và cũng có một biến `s` kiểu `String` được khởi tạo với giá trị "S2".
Khi `s2.display()` được gọi, phương thức `display()` của lớp `S1` được thực thi (vì `S2` không ghi đè phương thức này). Phương thức `display()` này in giá trị của biến `s` mà nó thấy. Trong trường hợp này, nó thấy biến `s` được định nghĩa trong lớp `S1`, do đó nó in ra "S1".
Như vậy, kết quả in ra màn hình là "S1".
- Lớp `Question` chứa hàm `main`. Hàm `main` tạo một đối tượng `s2` thuộc lớp `S2` và gọi phương thức `display()` trên đối tượng đó.
- Lớp `S1` có một biến `s` kiểu `String` được khởi tạo với giá trị "S1" và một phương thức `display()` in giá trị của biến `s` ra màn hình.
- Lớp `S2` kế thừa từ lớp `S1` và cũng có một biến `s` kiểu `String` được khởi tạo với giá trị "S2".
Khi `s2.display()` được gọi, phương thức `display()` của lớp `S1` được thực thi (vì `S2` không ghi đè phương thức này). Phương thức `display()` này in giá trị của biến `s` mà nó thấy. Trong trường hợp này, nó thấy biến `s` được định nghĩa trong lớp `S1`, do đó nó in ra "S1".
Như vậy, kết quả in ra màn hình là "S1".
Lời giải:
Đáp án đúng: C
Phương thức `main` là điểm khởi đầu của một chương trình Java. Nó phải được khai báo là `public static void main(String[] args)`.
* `public`: Cho phép phương thức `main` được gọi từ bên ngoài lớp.
* `static`: Cho phép phương thức `main` được gọi mà không cần tạo một thể hiện của lớp.
* `void`: Chỉ ra rằng phương thức `main` không trả về bất kỳ giá trị nào.
* `main`: Tên của phương thức.
* `String[] args`: Một mảng các chuỗi đại diện cho các đối số dòng lệnh được truyền cho chương trình.
Phân tích các lựa chọn:
* A. `public static void main()`: Thiếu tham số `String[] args`, là tham số bắt buộc của hàm `main`.
* B. `public void main(String[] arg)`: Thiếu từ khóa `static`, khiến phương thức không thể được gọi trực tiếp từ lớp.
* C. `public static void main(String[] args)`: Đây là khai báo chính xác của phương thức `main`.
* D. `public static int main(String[] arg)`: Kiểu trả về là `int` thay vì `void`, không đúng với quy định của phương thức `main`.
* `public`: Cho phép phương thức `main` được gọi từ bên ngoài lớp.
* `static`: Cho phép phương thức `main` được gọi mà không cần tạo một thể hiện của lớp.
* `void`: Chỉ ra rằng phương thức `main` không trả về bất kỳ giá trị nào.
* `main`: Tên của phương thức.
* `String[] args`: Một mảng các chuỗi đại diện cho các đối số dòng lệnh được truyền cho chương trình.
Phân tích các lựa chọn:
* A. `public static void main()`: Thiếu tham số `String[] args`, là tham số bắt buộc của hàm `main`.
* B. `public void main(String[] arg)`: Thiếu từ khóa `static`, khiến phương thức không thể được gọi trực tiếp từ lớp.
* C. `public static void main(String[] args)`: Đây là khai báo chính xác của phương thức `main`.
* D. `public static int main(String[] arg)`: Kiểu trả về là `int` thay vì `void`, không đúng với quy định của phương thức `main`.
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Bộ Đồ Án Tốt Nghiệp Ngành Trí Tuệ Nhân Tạo Và Học Máy
89 tài liệu310 lượt tải

Bộ 120+ Đồ Án Tốt Nghiệp Ngành Hệ Thống Thông Tin
125 tài liệu441 lượt tải

Bộ Đồ Án Tốt Nghiệp Ngành Mạng Máy Tính Và Truyền Thông
104 tài liệu687 lượt tải

Bộ Luận Văn Tốt Nghiệp Ngành Kiểm Toán
103 tài liệu589 lượt tải

Bộ 370+ Luận Văn Tốt Nghiệp Ngành Kế Toán Doanh Nghiệp
377 tài liệu1030 lượt tải

Bộ Luận Văn Tốt Nghiệp Ngành Quản Trị Thương Hiệu
99 tài liệu1062 lượt tải
ĐĂNG KÝ GÓI THI VIP
- Truy cập hơn 100K đề thi thử và chính thức các năm
- 2M câu hỏi theo các mức độ: Nhận biết – Thông hiểu – Vận dụng
- Học nhanh với 10K Flashcard Tiếng Anh theo bộ sách và chủ đề
- Đầy đủ: Mầm non – Phổ thông (K12) – Đại học – Người đi làm
- Tải toàn bộ tài liệu trên TaiLieu.VN
- Loại bỏ quảng cáo để tăng khả năng tập trung ôn luyện
- Tặng 15 ngày khi đăng ký gói 3 tháng, 30 ngày với gói 6 tháng và 60 ngày với gói 12 tháng.
77.000 đ/ tháng