Giá trị của biến y sau khi thực hiện biểu thức y = (4 > 0) ? 1 : -1; là bao nhiêu?
Trả lời:
Đáp án đúng: A
Biểu thức `y = (4 > 0) ? 1 : -1;` sử dụng toán tử điều kiện (ternary operator). Toán tử này có cú pháp `condition ? value_if_true : value_if_false`. Trong trường hợp này, `condition` là `4 > 0`, đây là một biểu thức so sánh. Vì 4 lớn hơn 0, biểu thức `4 > 0` trả về `true`. Do đó, giá trị của biểu thức ternary sẽ là `1`, và biến `y` sẽ được gán giá trị `1`.
Câu hỏi liên quan
Lời giải:
Đáp án đúng: B
Override (ghi đè) phương thức là một kỹ thuật trong lập trình hướng đối tượng cho phép một lớp con (subclass) định nghĩa lại một phương thức đã được định nghĩa trong lớp cha (superclass).
Phân tích các đáp án:
- A. Cùng tên khác kiểu trả về: Sai. Overriding yêu cầu cùng tên và cùng kiểu trả về (hoặc kiểu trả về là covariant - kiểu trả về của phương thức overriding ở lớp con là kiểu con của kiểu trả về ở lớp cha).
- B. Thuộc hai lớp có quan hệ kế thừa: Đúng. Overriding chỉ xảy ra giữa một lớp cha và một lớp con có quan hệ kế thừa.
- C. Cùng tên khác danh sách đối số: Sai. Đây là đặc điểm của overloading (nạp chồng) phương thức, không phải overriding.
- D. Thuộc cùng một lớp: Sai. Overriding liên quan đến hai lớp khác nhau trong hệ thống phân cấp kế thừa.
Vậy, đáp án đúng nhất là B: Thuộc hai lớp có quan hệ kế thừa.
Phân tích các đáp án:
- A. Cùng tên khác kiểu trả về: Sai. Overriding yêu cầu cùng tên và cùng kiểu trả về (hoặc kiểu trả về là covariant - kiểu trả về của phương thức overriding ở lớp con là kiểu con của kiểu trả về ở lớp cha).
- B. Thuộc hai lớp có quan hệ kế thừa: Đúng. Overriding chỉ xảy ra giữa một lớp cha và một lớp con có quan hệ kế thừa.
- C. Cùng tên khác danh sách đối số: Sai. Đây là đặc điểm của overloading (nạp chồng) phương thức, không phải overriding.
- D. Thuộc cùng một lớp: Sai. Overriding liên quan đến hai lớp khác nhau trong hệ thống phân cấp kế thừa.
Vậy, đáp án đúng nhất là B: Thuộc hai lớp có quan hệ kế thừa.
Lời giải:
Đáp án đúng: B
Trong Java, việc xử lý ngoại lệ (Exception) được thực hiện bằng cách sử dụng các khối `try`, `catch` và `finally`.
- Khối `try`: Chứa đoạn code mà bạn nghi ngờ có thể gây ra ngoại lệ. Nếu một ngoại lệ xảy ra trong khối `try`, chương trình sẽ chuyển quyền điều khiển đến khối `catch` tương ứng.
- Khối `catch`: Chứa code để xử lý ngoại lệ đã xảy ra trong khối `try`. Mỗi khối `try` có thể có nhiều khối `catch` để xử lý các loại ngoại lệ khác nhau.
- Khối `finally`: Chứa code sẽ luôn được thực thi, bất kể có ngoại lệ xảy ra hay không. Khối `finally` thường được sử dụng để giải phóng tài nguyên, đóng kết nối, v.v.
Như vậy, các câu lệnh xử lý Exception sẽ được đặt trong khối `try`, `catch` và `finally`. Tuy nhiên, đáp án chính xác nhất trong các lựa chọn là `try`, vì nó là nơi bắt đầu quá trình xử lý ngoại lệ.
- Khối `try`: Chứa đoạn code mà bạn nghi ngờ có thể gây ra ngoại lệ. Nếu một ngoại lệ xảy ra trong khối `try`, chương trình sẽ chuyển quyền điều khiển đến khối `catch` tương ứng.
- Khối `catch`: Chứa code để xử lý ngoại lệ đã xảy ra trong khối `try`. Mỗi khối `try` có thể có nhiều khối `catch` để xử lý các loại ngoại lệ khác nhau.
- Khối `finally`: Chứa code sẽ luôn được thực thi, bất kể có ngoại lệ xảy ra hay không. Khối `finally` thường được sử dụng để giải phóng tài nguyên, đóng kết nối, v.v.
Như vậy, các câu lệnh xử lý Exception sẽ được đặt trong khối `try`, `catch` và `finally`. Tuy nhiên, đáp án chính xác nhất trong các lựa chọn là `try`, vì nó là nơi bắt đầu quá trình xử lý ngoại lệ.
Lời giải:
Đáp án đúng: A
Câu hỏi kiểm tra kiến thức về cú pháp khai báo biến trong ngôn ngữ lập trình C/C++/Java (tương tự).
* Phương án A: `int x = 9;` - Đây là một khai báo biến kiểu số nguyên (int) có tên là `x` và gán giá trị ban đầu là 9. Cú pháp này hoàn toàn hợp lệ.
* Phương án B: `int y =!x;` - Toán tử `!` là toán tử NOT logic. Trong C/C++/Java, nó chuyển đổi giá trị của `x` thành giá trị boolean (true/false), sau đó đảo ngược giá trị này. Kết quả là một giá trị boolean (true hoặc false), nhưng ta lại cố gắng gán nó cho một biến kiểu `int`. Điều này gây ra lỗi kiểu dữ liệu.
* Phương án C: `double z = 9.00>>2` - Toán tử `>>` là toán tử dịch bit phải. Nó chỉ áp dụng cho các kiểu số nguyên. Ở đây, `9.00` là một số thực (double). Do đó, việc sử dụng `>>` sẽ gây ra lỗi biên dịch hoặc kết quả không mong muốn (tùy thuộc vào ngôn ngữ/trình biên dịch).
* Phương án D: `int i = ^7` - Toán tử `^` là toán tử XOR (exclusive OR) theo bit. Toán tử này cần hai toán hạng (ví dụ: `a ^ b`). Ở đây, nó chỉ có một toán hạng `7`, do đó cú pháp này không hợp lệ và gây ra lỗi.
Vậy, chỉ có phương án A là câu lệnh hợp lệ.
* Phương án A: `int x = 9;` - Đây là một khai báo biến kiểu số nguyên (int) có tên là `x` và gán giá trị ban đầu là 9. Cú pháp này hoàn toàn hợp lệ.
* Phương án B: `int y =!x;` - Toán tử `!` là toán tử NOT logic. Trong C/C++/Java, nó chuyển đổi giá trị của `x` thành giá trị boolean (true/false), sau đó đảo ngược giá trị này. Kết quả là một giá trị boolean (true hoặc false), nhưng ta lại cố gắng gán nó cho một biến kiểu `int`. Điều này gây ra lỗi kiểu dữ liệu.
* Phương án C: `double z = 9.00>>2` - Toán tử `>>` là toán tử dịch bit phải. Nó chỉ áp dụng cho các kiểu số nguyên. Ở đây, `9.00` là một số thực (double). Do đó, việc sử dụng `>>` sẽ gây ra lỗi biên dịch hoặc kết quả không mong muốn (tùy thuộc vào ngôn ngữ/trình biên dịch).
* Phương án D: `int i = ^7` - Toán tử `^` là toán tử XOR (exclusive OR) theo bit. Toán tử này cần hai toán hạng (ví dụ: `a ^ b`). Ở đây, nó chỉ có một toán hạng `7`, do đó cú pháp này không hợp lệ và gây ra lỗi.
Vậy, chỉ có phương án A là câu lệnh hợp lệ.
Lời giải:
Đáp án đúng: D
Đáp án đúng là B. native MyMethod();
Giải thích:
* A. abstract int i;: Khai báo biến `i` là `abstract` là không hợp lệ. `abstract` chỉ được dùng cho class và method, không dùng cho biến.
* B. native MyMethod();: Khai báo phương thức `native` là hợp lệ. `native` được sử dụng để khai báo một phương thức được triển khai bằng ngôn ngữ khác (ví dụ: C, C++). Nó không có phần thân (body) và kết thúc bằng dấu chấm phẩy (;).
* C. default class MyClass {};: `default` không phải là một từ khóa hợp lệ để khai báo một class. `default` chỉ có thể được sử dụng trong switch case hoặc trong interface để định nghĩa implementation mặc định cho một method.
* D. abstract final class MyClass {};: Một class không thể vừa là `abstract` vừa là `final`. `abstract` có nghĩa là class này phải được kế thừa (inherited) và các phương thức `abstract` của nó phải được implement bởi lớp con. `final` có nghĩa là class này không thể được kế thừa. Do đó, hai modifier này mâu thuẫn nhau.
Vì vậy, chỉ có khai báo `native MyMethod();` là không gây ra lỗi biên dịch.
Giải thích:
* A. abstract int i;: Khai báo biến `i` là `abstract` là không hợp lệ. `abstract` chỉ được dùng cho class và method, không dùng cho biến.
* B. native MyMethod();: Khai báo phương thức `native` là hợp lệ. `native` được sử dụng để khai báo một phương thức được triển khai bằng ngôn ngữ khác (ví dụ: C, C++). Nó không có phần thân (body) và kết thúc bằng dấu chấm phẩy (;).
* C. default class MyClass {};: `default` không phải là một từ khóa hợp lệ để khai báo một class. `default` chỉ có thể được sử dụng trong switch case hoặc trong interface để định nghĩa implementation mặc định cho một method.
* D. abstract final class MyClass {};: Một class không thể vừa là `abstract` vừa là `final`. `abstract` có nghĩa là class này phải được kế thừa (inherited) và các phương thức `abstract` của nó phải được implement bởi lớp con. `final` có nghĩa là class này không thể được kế thừa. Do đó, hai modifier này mâu thuẫn nhau.
Vì vậy, chỉ có khai báo `native MyMethod();` là không gây ra lỗi biên dịch.
Lời giải:
Đáp án đúng: A
Đoạn mã khai báo một mảng `s1` kiểu `String` với kích thước là 5. Khi một mảng `String` được khởi tạo bằng `new String[5]`, tất cả các phần tử của mảng sẽ được khởi tạo với giá trị mặc định là `null`.
Sau đó, đoạn mã cố gắng truy cập phần tử đầu tiên của mảng (`s1[0]`) và gọi phương thức `toUpperCase()` trên nó. Vì `s1[0]` có giá trị là `null`, việc gọi bất kỳ phương thức nào trên một đối tượng `null` sẽ gây ra ngoại lệ `NullPointerException`.
Do đó, chương trình sẽ ném ra ngoại lệ `NullPointerException` và kết thúc thực thi.
Sau đó, đoạn mã cố gắng truy cập phần tử đầu tiên của mảng (`s1[0]`) và gọi phương thức `toUpperCase()` trên nó. Vì `s1[0]` có giá trị là `null`, việc gọi bất kỳ phương thức nào trên một đối tượng `null` sẽ gây ra ngoại lệ `NullPointerException`.
Do đó, chương trình sẽ ném ra ngoại lệ `NullPointerException` và kết thúc thực thi.
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