Bài tập trắc nghiệm java có đáp án năm 2024

Bài tập trắc nghiệm java có đáp án năm 2024

1.438 lượt xem 90 download

Bài tập trắc nghiệm java có đáp án năm 2024
DownloadVui lòng tải xuống để xem tài liệu đầy đủ

Bài tập trắc nghiệm java có đáp án năm 2024

Nội dung Text: Tổng hợp câu hỏi trắc nghiệm Java cơ bản

  1. 1 [Góp ý] Đâ u là câu SAI v ềngôn ng ữJava? A) Ngôn ngữ Java có phân biệt chữ hoa – chữ thường B) Java là ngôn ngữ lập trình hướng đối tượng C) Dấu chấm phẩy được sử dụng để kết thúc lệnh trong java D) Chương trình viết bằng Java chỉ có thể chạy trên hệ điều hành win Đúng. Đáp án đúng là: Chương trình viết bằng Java chỉ có thể chạy trên hệ điều hành win Vì: Chương trình viết bằng java có thể chạy trên nhiều hệ điều hành khác nhau. Tham khảo: Giáo trình: [1] mục 1.2 Câu2 [Góp ý] Đâu không phải là một kiểu dữ liệu nguyên thủy trong Java? A) double B) int C) long D) long float Đúng. Đáp án đúng là: long float Vì: double, int, long ở các là các kiểu dữ liệu nguyên thủy trong Java. Trong Java không có ki ểu d ữ li ệu d ẫn xuất long float. Tham khảo: Giáo trình: [1] mục 1. 4 Câu3 [Góp ý] Trong câu lệnh sau: public static void main(String[] agrs) thì ph ần tử agrs[0] ch ứa giá trị gì? Chọn một câu trả lời A) Tên của chương trình B) Số lượng tham số C) Tham số đầu tiên của danh sách tham số D) Không câu nào đúng Sai. Đáp án đúng là: Tham số đầu tiên của danh sách tham số Vì: + Trong khai báo đối số của hàm main() thì agrs là một mảng xâu kí tự, đồng thời hàm main có th ể nh ận nhiều đối số => agrs[0] là đối số đầu tiên trong danh sách đối số của hàm main() Tham khảo: Giáo trình: [1] mục 1.4 Câu4 [Góp ý] Phương thức next() của lớp Scanner dùng để làm gì? Chọn một câu trả lời A) Nhập một số nguyên B) Nhập một ký tự C) Nhập một chuỗi D) Không có phương thức này Sai. Đáp án đúng là: "Nhập một chuỗi" Vì: Phương thức next() của lớp Scanner sử dụng để nhập một chuỗi ký tự bao gồm cả khoảng tr ắng. Tham khảo: Giáo trình: [1] mục 1.4 Câu5 [Góp ý] Muốn chạy được chương trình java, chỉ cần cài phần mền nào sau đây? Chọn một câu trả lời A) Netbeans B) Eclipse C) JDK D) Java Platform Sai. Đáp án đúng là: : Java Platform Vì: Netbeans hoặc Eclipse là môi trường lập trình, chứ không phải để chạy ứng dụng Java. JDK ở đáp án C là để phát triển ứng dụng Java.
  2. Java Platform là vừa đủ để chạy ứng dụng Java. Tham khảo: Giáo trình: [1] mục 1.1 Câu6 [Góp ý] Gói nào trong java chứa lớp Scanner dùng để nhập dữ liệu từ bàn phím? Chọn một câu trả lời A) java.net B) java.io C) java.util D) java.awt Sai. Đáp án đúng là: "java.util " Vì: Theo cấu trúc của gói java.util Tham khảo: Giáo trình: [1] mục 1.4 Câu7 [Góp ý] Phương thức nextLine() thuộc lớp nào ? Chọn một câu trả lời A) String B) Scanner C) Integer D) System Sai. Đáp án đúng là: Scanner Vì: phương thức nextLine() thuộc lớp Scanner. Tham khảo: Giáo trình: [1] mục 1.4 Câu8 [Góp ý] Tên đầu tiên của Java là gì? Chọn một câu trả lời A) Java B) Oak C) Cafe D) James golings Sai. Đáp án đúng là: Oak Vì: Theo lịch sử ngôn ngữ java tên đầu tiên của java là oak. Tham khảo: Giáo trình: [1] mục 1.1 Câu9 [Góp ý] G/s đã định nghĩa lớp XX với một phương thức thông thường là Display, sau đó sinh ra đối tượng objX từ lớp XX. Để gọi phương thức Display ta sử dụng cú pháp nào? Chọn một câu trả lời A) XX.Display; B) XX.Display(); C) objX.Display(); D) Display(); Sai. Đáp án đúng là: objX.Display(); Vì: Để truy xuất và phương thức của đối tượng ta sử dụng cú pháp: tendoituong.tenphuongthuc(); Tham khảo: Giáo trình: [1] mục 1.3 Câu10 [Góp ý] Đâu KHÔNG phải là thành phần trong cấu trúc của lớp trong java. Chọn một câu trả lời A) Tên lớp B) Thuộc tính C) Phương thức D) Biến Đúng. Đáp án đúng là: Biến
  3. Vì: Thành phần trong cấu trúc của lớp trong java bao gồm tên lớp, thu ộc tính, ph ương th ức. Tham khảo: Giáo trình: [1] mục 1.3 Câu3 [Góp ý] Câu 1: Từ khóa new kết hợp với hàm tạo để tạo ra đối tượng. Câu 2: Hàm tạo được sử dụng để hủy đối tượng Chọn một câu trả lời A) Cả hai câu đều đúng B) Cả hai câu đều sai C) Câu 1 đúng, câu 2 sai D) Câu 2 đúng, câu 1 sai Đúng. Đáp án đúng là: Câu 1 đúng, câu 2 sai Vì: + Trong java toán tử new được sử dụng kết hợp với hàm tạo để sinh ra đối tượng Tham khảo: Giáo trình: [1] mục 1.3 Câu5 [Góp ý] Điểm : 1 Đọc đoạn mã lệnh sau 1:public class Main { 2: public static void main(String[] args) { 3: int x = -1; 4: String y = x + 3; 5: System.out.println("x = " + x + "y = " + y); 6: } 7:} Sau khi thực thi chương trình sẽ in ra kết quả gì ? A) x=­1 y=2 B) Lỗi biên dịch: Uncompilable source code ­ incompatible types C) x=­1 y=­13 D) x=­1 y=4 Đúng. Đáp án đúng là: Lỗi biên dịch: Uncompilable source code - incompatible types Vì: y là chuỗi, x là số không thể thực hiện cộng chuỗi và số. Tham khảo: Giáo trình: [1] mục 1.3 Câu9 [Góp ý] Đoạn mã KHÔNG in ra màn hình số 13? A) int x=13; System.out.println(x); B) int x=13; System.out.println("x"); C) int x=13; System.out.println("13"); D) int x=13; System.out.println(""+x);
  4. Đúng. Đáp án đúng là: int x=13; System.out.println("x"); Vì: - Đáp án int x=13; System.out.println(x); in ra giá trị của x là 13. - Đáp án int x=13; System.out.println("x"); in ra xâu ký tự "x", in ra x. - Đáp án int x=13; System.out.println("13"); in ra xâu ký tự "13", in ra 13 - Đáp án int x=13; System.out.println(""+x); in ra xâu ký tự ""+x, in ra 13 Tham khảo: Giáo trình: [1] mục 1.4 Câu10 [Góp ý] Đối tượng là gì? A) Các lớp được tạo thể hiện từ đó B) Một thể hiện của lớp C) Một tham chiếu đến một thuộc tính D) Một biến Đúng. Đáp án đúng là: Một thể hiện của lớp Vì: Lớp là một tập tất cả các đối tượng có cùng thuộc tính và hành vi. V ậy nói ngược lại đối tượng chính là m ột thể hiện cụ thể của lớp. Tham khảo: Giáo trình: [1] mục 1.3 Câu1 [Góp ý] Đâu là khai báo biến đúng trong java? (1) rollNumber (2) $rearly_salary (3) double (4) $$_ (5) mount

    balance Chọn một câu trả lời A) 12345 B) 123 C) 124 D) 125 Đúng. Đáp án đúng là: 124 Vì: Tên biến không được trùng tên với từ khóa (double), không chứa các kí t ự đặc biệt (#). Tham khảo: Giáo trình: [1] mục 2.1 Câu2 [Góp ý] Đọc đoạn mã sau: 11: int i = 1,j = 10; 12: do { 13: if(i>j) { 14: break; 15: } 16: j--; 17: } while (++i

  5. Kết quả in ra của đoạn mã trên là gì? Chọn một câu trả lời A) i = 6 and j = 5 B) i = 5 and j = 5 C) i = 6 and j = 4 D) i = 5 and j = 6 Sai. Đáp án đúng là: "i = 5 and j = 6" Vì: + Vòng lặp kiểm tra nếu i>j sẽ kết thúc vòng lặp + Mỗi bước lặp i tăng 1 và j giảm 1 + Điều kiện kết thúc vòng lặp là i >=5 Tham khảo: Giáo trình: [1] mục 2.3 Câu3 [Góp ý] Với giá trị nào của x, biểu thức sau trả về giá trị true(x thuộc kiểu int). x%3==0 Chọn một câu trả lời A) 2 B) 7 C) 4 D) 9 Đúng. Đáp án đúng là: 9 Vì: x%3 trả về giá trị là 0 khi x là bội của 3. Trong các đáp án, chỉ có đáp án D có gia tr ị là b ội c ủa 3. Tham khảo: Giáo trình: [1] mục 2.1 Câu4 [Góp ý] Lựa chọn đáp án phù hợp: (a) byte (1) 256 (b) char (2) 5000 (c)int (3) 4899.99 (d) short (4)126 (e) double (5) 'F' Chọn một câu trả lời A) a­4, b­5, c­2, d­1, e­3 B) a­1, b­2, c­2, d­1, e­3 C) a­1, b­5, c­4, d­4, e­3 D) a­5, b­4, c­1, d­2, e­3 Đúng. Đáp án đúng là: a-4, b-5, c-2, d-1, e-3 Vì: byte: 126, char:'F', int:5000, short: 256, double:4899.99 Tham khảo: Giáo trình: [1] mục 2.1 Câu5 [Góp ý] Kiểu dữ liệu nào trong Java chứa giá trị bao gồm cả chữ và số? Chọn một câu trả lời A) int B) byte C) char D) String Đúng. Đáp án đúng là: String Vì: Kiểu dữ liệu String chứa giá trị bao gồm cả chữ và số. Tham khảo: Giáo trình: [1] mục 2.1 Câu6 [Góp ý] int i=0; do { flag = false; System.out.print( i++ );
  6. flag = i < 10; continue; }while ( (flag)? true:false ); Kết quả in ra của đoạn mã trên là gì? A) 000000000 B) 0123456789 C) Lỗi biên dịch D) Đoạn mã thực thi nhưng không in ra kết quả gì Đúng. Đáp án đúng là: 0123456789 Vì: Khi thực thi chương trình vòng lặp do/while sẽ chạy biến i từ 0 đến 9 Tham khảo: Giáo trình: [1] mục 1. Câu7 [Góp ý] Đọc đoạn mã sau: 11: int x = 3; 12: int y = 1; 13: if (x = y) { 14: System.out.println("x = " + x); 15: } Kết quả in ra của đoạn mã trên là gì? A) x = 1 B) x = 3 C) Lỗi biên dịch D) Chương trình chạy nhưng không in ra kết quả Sai. Đáp án đúng là: "Lỗi biên dịch" Vì: Sử dụng sai phép so sánh trong lệnh if, toán tử = là toán tử gán không s ử d ụng trong bi ểu th ức c ủa l ệnh if. Tham khảo: Giáo trình: [1] mục 2.3 Câu8 [Góp ý] Đọc đoạn code sau: 1:public class Test { 2:public int aMethod() { 3:int i = 0; 4:i++; 5:return i; 6:} 7:public static void main (String[]args){ 8:Test test = new Test(); 9:test.aMethod(); 10:int j = test.aMethod(); 11:System.out.println(j); 12:} 13:} Kết quả là gì? Chọn một câu trả lời A) 0 B) 1 C) 2 D) Lỗi biên dịch Đúng. Đáp án đúng là: 1 + Lệnh Test test=new Test() sẽ khởi tạo một đối tượng test
  7. + test.aMethod() sẽ khởi tạo thuộc tính i=0 + int j=test.Method() sẽ tăng thuộc tính i lên 1 (bằng 1) và gán giá tr ị cho j => j=1 Tham khảo: Giáo trình: [1] mục 2.2 Câu9 [Góp ý] Đâu là khai báo biến hợp lệ? Chọn một câu trả lời A) theOne B) the One C) 1the_One D) $the One Đúng. Đáp án đúng là: theOne Vì: Theo quy tắc khai báo biến thì tên biến nên bắt đầu bởi ký tự, không có khoảng cách gi ữa tên bi ến và tên biến không được bắt đầu bởi số. Tham khảo: Giáo trình: [1] mục 2.1 Câu10 [Góp ý] Đâu là cách thức tạo SAI về đối tượng của lớp Animal sau: class Animal{ String name; public Animal(String x){ this.name = x; } } Chọn một câu trả lời A) Animal a = new Animal(); B) Animal a = new Animal("name"); C) Animal a = new Animal(""); D) new Animal("name"); Sai. Đáp án đúng là: Animal a = new Animal() Vì: Trong lớp Animal không có hàm tạo mà không có tham số truyền vào. Tham khảo: Giáo trình: [1] mục 2.1 Câu3 [Góp ý] Xét 2 câu sau: Câu 1: Biến được khai báo bên trong lớp được dùng để lưu trữ các giá trị thuộc tính của đối tượng Câu 2: Biến địa phương là biến được khai báo bên trong phương thức và các khối lệnh. Đúng. Đáp án đúng là: Cả 2 câu đều đúng Tham khảo: Giáo trình: [1] mục 2.1 Câu4 [Góp ý] Biểu thức nào có giá trị khác các biểu thức còn lại trong các biểu thức sau? Cho x=true thuộc kiểu boolean. A) true B) x==true; C) 1==1 D) !x Đúng. Đáp án đúng là: !x Vì: Biểu thức x==true ở đáp án B trả về giá trị là true, 1==1 ở đáp án C cũng tr ả v ề giá tr ị là true. !x trả về giá trị là !true là false, khác các đáp án khách. Tham khảo: Giáo trình: [1] mục 2.1 Câu6 [Góp ý]
  8. Có mấy cách để truyền tham số vào cho một phương thức? Chọn một câu trả lời A) 2 B) 1 C) 3 D) 4 Đúng. Đáp án đúng là: 2 Vì: Khi truyền tham số vào cho phương thức có hai cách là: truyền theo kiểu tham tr ị và truy ền theo ki ểu tham biến. Tham khảo: Giáo trình: [1] mục 2.2.4 Câu8 [Góp ý] public class Test{ public static int switchIt(int x) { int j = 1; switch (x) { case 1: j++; case 2: j++; case 3: j++; case 4: j++; default: j++; } return j + x; } public static void main(String[] args) { System.out.println("value = " + switchIt(4)); } } Kết quả in ra của đoạn mã trên là gì? Chọn một câu trả lời A) value = 3 B) value = 4 C) value = 5 D) value = 7 Đúng. Đáp án đúng là: value = 7 Vì: Khi thực thi chương trình, hàm main() sẽ gọi hàm switchIt(4), hàm switch() s ẽ gán j=1, và so sánh x v ới các giá trị 1,2,3,4 và sẽ thực hiện các lệnh từ nhánh j=4 đến hết switch(vì không có l ệnh break) do đó j tăng lên 2 => j=3. Cuối cùng sẽ trả về giá trị j+x =3+4=7. Tham khảo: Giáo trình: [1] mục 1. Câu10 [Góp ý] 01:class A { 02: int x = 10; 03: public void calTotal(A a){ 04: a.x = 12; 05: 06:System.out.println(a.x); 07: } 08:} Khi thực hiện lệnh: A a = new A(); a.calTotal(a);
  9. Giá trị của x sau khi thực hiện lệnh trên sẽ cho kết qu ả gì? A) 10 B) 12 C) 22 D) 1012 Đúng. Đáp án đúng là: 12 Vì: Khi gọi hàm calTotal tham số truyền cho hàm là một đối tượng thuộc lớp A, do đó sẽ làm thay đổi thu ộc tính x của lớp A sang giá trị là 12. Tham khảo: Giáo trình: [1] mục 2.2.4 7 Đâu là khai báo đúng về lớp Cat? Chọn một câu trả A) Class Cat{} lời B) class public Cat(){} C) class Cat{} D) public Cat class{} Đúng. Đáp án đúng là: class Cat{} Vì: Theo cú pháp khai báo lớp Tham khảo: Giáo trình: [1] mục 2.1 7 [Góp ý] Điểm : 1 Đâu KHÔNG phải là cách thức để khởi tạo giá trị cho thuộc tính name có kiểu chuỗi của lớp Cat? A) class Cat {String name = "noname";} B) public class Cat{ String name; public Cat(){name = "noname";} } C) public class Cat{ String name; public Cat(String x){name = x;} } D) public class Cat{ String name; public Cat(){ String name = "noname"; } } Đúng. Đáp án đúng là: public class Cat{ String name; public Cat(){
  10. String name = "noname"; } } Vì: Sai về cách thức khởi tạo thuộc tính name của lớp Cat sai về cách thức khởi tạo thuộc tính name c ủa lớp Cat Biến name trong hàm tạo là biến cục bộ, không phải là thuộc tính name. Tham khảo: Giáo trình: [1] mục 2.1 1 [Góp ý] Điểm : 1 Đọc đoạn mã sau: 1.0: package pac02; 1.1: public class ClassA { 1.2: public int xA; 1.3: public String yA; 1.4:} - 2.0: package pac01; 2.1: import pac02.ClassA; 2.2: public class Test { 2.3: public static void main(String[] args) { 2.4: ClassA a = new ClassA(); 2.5: a.xA = 12; 2.6: a.yA = "Hello"; 2.7: System.out.println("a.xA = " + a.xA + "; a.yA = " + a.yA); 2.8: } 2.9: } Chương trình sẽ in ra kết quả gì khi thực thi? Chọn một câu trả A) Lỗi biên dịch dòng 2.5, 2.6, 2.7 lời B) Lỗi biên dịch dòng 2.5 C) Lỗi biên dịch dòng 2.6, 2.7 D) a.xA = 12; a.yA = Hello Đúng. Đáp án đúng là: a.xA = 12; a.yA = Hello Vì: Thuộc tính xA, yA của lớp ClassA được khai báo với từ khóa public nên được truy xuất và in ra kết quả chương trình là xA = 12, yA = Hello. Tham khảo: Giáo trình: [1] mục 3.2, 3.3 Đúng Điểm: 1/1. Câu2 [Góp ý] Điểm : 1 Đoạn mã sau có lỗi biên dịch gì? public class Person { protected String name; protected int age; public static void main(String[] args) { Person p = new Person(); p.name="Tom"; System.out.println(p.name); } } Chọn một câu trả A) Không có lỗi biên dịch. lời B) name has protected access. C) age has protected access. D) name has public access. Sai. Đáp án đúng là: Không có lỗi biên dịch.
  11. Vì: hàm main ở trong cùng lớp Person, nên có thể truy xuất tới tất cả các trường c ủa Person. Tham khảo: Giáo trình: [1] mục 3.2 Không đúng Điểm: 0/1. Câu3 [Góp ý] Điểm : 1 Câu 1: Một thành viên protected của một lớp có thể được truy xu ất từ b ất kỳ lớp nào trong cùng một gói và từ một lớp con nằm bên ngoài gói nếu lớp bên ngoài đó là lớp con. Câu 2: Một thành viên của một lớp được khai báo là private không những không thể được truy xuất từ bên trong lớp mà còn không nơi nào bên ngoài lớp. Chọn một câu trả A) Câu 1 sai, câu 2 đúng lời B) Câu 1 đúng, câu 2 sai C) Cả 2 câu cùng đúng D) Cả 2 câu cùng sai Đúng. Đáp án đúng là: Câu 1 đúng, câu 2 sai Vì: + Các thành phần Protected có thể truy xuất từ lớp đó và các lớp con c ủa l ớp đó + Thành phần private chỉ có thể truy xuất từ trong lớp đó. Câu 1 đúng, câu 2 sai Tham khảo: Giáo trình: [1] mục 3.3 Đúng Điểm: 1/1. Câu4 [Góp ý] Điểm : 1 Trong các khai báo sau đâu là khai báo không hợp lệ? Chọn một câu trả A) int a1[][] = new int[][3]; lời B) int a2[][] = new int[2][3]; C) int a3[][] = new int[2][]; D) int a4[][] = {{}, {}, {}}; Sai. Đáp án đúng là: int a1[][] = new int[][3]; Vì: + Bắt buộc phải xác định số dòng trong khai báo mảng hai chiều. Tham khảo: Giáo trình: [1] mục 4.3 Không đúng Điểm: 0/1. Câu5 [Góp ý] Điểm : 1 Phát biểu nào sau đây là đúng: Chọn một câu trả A) Mảng có thể lưu giữ các phần tử thuộc nhiều kiểu dữ liệu k lời B) Chỉ số của mảng có thể sử dụng kiểu số thực (float, double) C) Biểu thức array.length được sử dụng để trả về số phần tử tr D) Một phần tử của mảng không thể truyền vào trong một phư Sai. Đáp án đúng là: Biểu thức array.length được sử dụng để trả về số phần tử trong mảng Vì: biểu thức array.length trả về số phần tử trong mảng. Tham khảo: Giáo trình: [1] mục 4.2 Không đúng Điểm: 0/1.
  12. Câu6 [Góp ý] Điểm : 1 Chương trình sau in ra màn hình xâu nào? 01: public class Main{ 02: public static void main(String[] args) { 03: String names[] = {"John","Anna","Peter","Victor","David"}; 04: System.out.println(names[2]); 05: } 06:} Chọn một câu trả A) Có lỗi biên dịch: use new keyword to create object lời B) Peter C) Anna D) Victor Đúng. Đáp án đúng là: Peter Vì: + Lệnh System.out.println(names[2]);sẽ in ra phần tử đứng thứ 3 trong mảng names (ch ỉ s ố m ảng t ừ 0 => in ra Peter) Tham khảo: Giáo trình: [1] mục 4.2 Đúng Điểm: 1/1. Câu7 [Góp ý] Điểm : 1 Nếu phương thức của bạn ghi đè một trong số các phương thức của lớp cha, bạn có thể gọi phương thức bị ghi đè thông qua từ khóa nào? Chọn một câu trả A) parent lời B) super C) this D) static Sai. Đáp án đúng là: super Vì: Từ khóa super được sử dụng trong lớp con để gọi phương thức của lớp cha. Tham khảo: Giáo trình: [1] mục 5.2 Không đúng Điểm: 0/1. Câu8 [Góp ý] Điểm : 1 Hãy cho biết kết quả khi chạy đoạn chương trình sau? class Student { public int getAge(){ return 10; } } public class Man extends Student{ public int getAge(int added) { return super.getAge()+added; } public static void main(String[] args) { Man s = new Man();
  13. System.out.println(s.getAge()); System.out.println(s.getAge()); } } Chọn một câu trả A) lời 10 11 B) 10 10 C) 11 11 D) Không in gì và báo lỗi Sai. Đáp án đúng là: Không có lỗi biên dịch. In ra 10 10 Vì: + Lệnh đầu tiên trong hàm main() sẽ sinh ra đối tượng s từ lớp Man. + Lệnh thứ 2 của hàm main sẽ gọi phương thức getAge() của đối tượng s, tuy nhiên s kế th ừa t ừ l ớp Student do đó sẽ triệu gọi phương thức getAge của lớp Student => in ra 10 + Lệnh thứ 3 của hàm main() sẽ gọi phương thức getAge() của đối t ượng s => g ọi đến phương th ức getAge() của lớp Student => in ra 10 Tham khảo: Giáo trình: [1] mục 5.2 Không đúng Điểm: 0/1. Câu9 [Góp ý] Điểm : 1 Đoạn mã sau có lỗi biên dịch nào? class Student { } public class Man extends Student{ public static void main(String[] args) { Man m = new Student(); } } Chọn một câu trả A) lời Không có lỗi biên dịch. B) Có lỗi biên dịch: Incompatible type, required Man, found Student. C) Có lỗi biên dịch:Incompatible type, required Student, found Man. D) Do not use extends to make subclass..
  14. Sai. Đáp án đúng là: Có lỗi biên dịch: Incompatible type, required Man, found Student. Vì: m thuộc kiểu Man, nên có thể chứa pointer tới đối tượng của lớp Man. Không chứa được pointer tới đối tượng của lớp Student. Tham khảo: Giáo trình: [1] mục 5.2 Không đúng Điểm: 0/1. Câu10 [Góp ý] Điểm : 1 Đoạn mã sau có lỗi biên dịch nào? class Student { public String sayHello(){ return "Student"; } } public class Man extends Student{ public int sayHello() { return 0; } } Chọn một câu trả A) lời Có lỗi biên dịch:sayHello() in Man cannot override sayHello() in Student is not compatible with java.lang.String B) Không có lỗi biên dịch. C) Có lỗi biên dịch:sayHello() in Man cannot override sayHello() in Student final D) Có lỗi biên dịch:sayHello() in Man and in Student has the same access m Đúng. Đáp án đúng là: Có lỗi biên dịch:sayHello() in Man cannot override sayHello() in Student return type int is not compatible with java.lang.String Vì: Lớp Man định viết đè sayHello() được viết ở Student, nhưng có kiểu dữ liệu trả về là int không thể chuy ển thành String được. Và sayHello() không được đánh dấu là final, nên có thể được ghi đè. sayHello() ở cả hai lớp đều có cùng access modifier, điều này là hợp lệ. Tham khảo: Giáo trình: [1] mục 5.2 1 [Góp ý] Điểm : 1 Đọc đoạn mã sau: 1.0: package pac02; 1.1: public class ClassA { 1.2: public int xA; 1.3: public String yA; 1.4:} -
  15. 2.0: package pac01; 2.1: import pac02.ClassA; 2.2: public class Test { 2.3: public static void main(String[] args) { 2.4: ClassA a = new ClassA(); 2.5: a.xA = 12; 2.6: a.yA = "Hello"; 2.7: System.out.println("a.xA = " + a.xA + "; a.yA = " + a.yA); 2.8: } 2.9: } Chương trình sẽ in ra kết quả gì khi thực thi? Chọn một câu trả A) Lỗi biên dịch dòng 2.5, 2.6, 2.7 lời B) Lỗi biên dịch dòng 2.5 C) Lỗi biên dịch dòng 2.6, 2.7 D) a.xA = 12; a.yA = Hello Đúng. Đáp án đúng là: a.xA = 12; a.yA = Hello Vì: Thuộc tính xA, yA của lớp ClassA được khai báo với từ khóa public nên được truy xuất và in ra kết quả chương trình là xA = 12, yA = Hello. Tham khảo: Giáo trình: [1] mục 3.2, 3.3 Đúng Điểm: 1/1. Câu2 [Góp ý] Điểm : 1 Đoạn mã sau có lỗi biên dịch gì? public class Person { protected String name; protected int age; public static void main(String[] args) { Person p = new Person(); p.name="Tom"; System.out.println(p.name); } } Chọn một câu trả A) Không có lỗi biên dịch. lời B) name has protected access. C) age has protected access. D) name has public access. Sai. Đáp án đúng là: Không có lỗi biên dịch. Vì: hàm main ở trong cùng lớp Person, nên có thể truy xuất tới tất cả các trường c ủa Person. Tham khảo: Giáo trình: [1] mục 3.2 Không đúng Điểm: 0/1. Câu3 [Góp ý] Điểm : 1 Câu 1: Một thành viên protected của một lớp có thể được truy xu ất từ b ất kỳ lớp nào trong cùng một gói và từ một lớp con nằm bên ngoài gói nếu lớp bên ngoài đó là lớp con. Câu 2: Một thành viên của một lớp được khai báo là private không những không thể được truy xuất từ bên trong lớp mà còn không nơi nào bên ngoài lớp. Chọn một câu trả A) Câu 1 sai, câu 2 đúng lời B) Câu 1 đúng, câu 2 sai C) Cả 2 câu cùng đúng
  16. D) Cả 2 câu cùng sai Đúng. Đáp án đúng là: Câu 1 đúng, câu 2 sai Vì: + Các thành phần Protected có thể truy xuất từ lớp đó và các lớp con c ủa l ớp đó + Thành phần private chỉ có thể truy xuất từ trong lớp đó. Câu 1 đúng, câu 2 sai Tham khảo: Giáo trình: [1] mục 3.3 Đúng Điểm: 1/1. Câu4 [Góp ý] Điểm : 1 Trong các khai báo sau đâu là khai báo không hợp lệ? Chọn một câu trả A) int a1[][] = new int[][3]; lời B) int a2[][] = new int[2][3]; C) int a3[][] = new int[2][]; D) int a4[][] = {{}, {}, {}}; Sai. Đáp án đúng là: int a1[][] = new int[][3]; Vì: + Bắt buộc phải xác định số dòng trong khai báo mảng hai chiều. Tham khảo: Giáo trình: [1] mục 4.3 Không đúng Điểm: 0/1. Câu5 [Góp ý] Điểm : 1 Phát biểu nào sau đây là đúng: Chọn một câu trả A) Mảng có thể lưu giữ các phần tử thuộc nhiều kiểu dữ liệu k lời B) Chỉ số của mảng có thể sử dụng kiểu số thực (float, double) C) Biểu thức array.length được sử dụng để trả về số phần tử tr D) Một phần tử của mảng không thể truyền vào trong một phư Sai. Đáp án đúng là: Biểu thức array.length được sử dụng để trả về số phần tử trong mảng Vì: biểu thức array.length trả về số phần tử trong mảng. Tham khảo: Giáo trình: [1] mục 4.2 Không đúng Điểm: 0/1. Câu6 [Góp ý] Điểm : 1 Chương trình sau in ra màn hình xâu nào? 01: public class Main{ 02: public static void main(String[] args) { 03: String names[] = {"John","Anna","Peter","Victor","David"}; 04: System.out.println(names[2]); 05: } 06:} Chọn một câu trả A) Có lỗi biên dịch: use new keyword to create object lời B) Peter C) Anna D) Victor Đúng. Đáp án đúng là: Peter
  17. Vì: + Lệnh System.out.println(names[2]);sẽ in ra phần tử đứng thứ 3 trong mảng names (ch ỉ s ố m ảng t ừ 0 => in ra Peter) Tham khảo: Giáo trình: [1] mục 4.2 Câu8 [Góp ý] Điểm : 1 Hãy cho biết kết quả khi chạy đoạn chương trình sau? class Student { public int getAge(){ return 10; } } public class Man extends Student{ public int getAge(int added) { return super.getAge()+added; } public static void main(String[] args) { Man s = new Man(); System.out.println(s.getAge()); System.out.println(s.getAge()); } } Chọn một câu trả A) lời 10 11 B) 10 10 C) 11 11 D) Không in gì và báo lỗi Sai. Đáp án đúng là: Không có lỗi biên dịch. In ra 10 10 Vì: + Lệnh đầu tiên trong hàm main() sẽ sinh ra đối tượng s từ lớp Man. + Lệnh thứ 2 của hàm main sẽ gọi phương thức getAge() của đối tượng s, tuy nhiên s kế th ừa t ừ l ớp Student do đó sẽ triệu gọi phương thức getAge của lớp Student => in ra 10 + Lệnh thứ 3 của hàm main() sẽ gọi phương thức getAge() của đối t ượng s => g ọi đến phương th ức getAge() của lớp Student => in ra 10 Tham khảo: Giáo trình: [1] mục 5.2 Không đúng Điểm: 0/1. Câu9 [Góp ý] Điểm : 1
  18. Đoạn mã sau có lỗi biên dịch nào? class Student { } public class Man extends Student{ public static void main(String[] args) { Man m = new Student(); } } Chọn một câu trả A) lời Không có lỗi biên dịch. B) Có lỗi biên dịch: Incompatible type, required Man, found Student. C) Có lỗi biên dịch:Incompatible type, required Student, found Man. D) Do not use extends to make subclass.. Sai. Đáp án đúng là: Có lỗi biên dịch: Incompatible type, required Man, found Student. Vì: m thuộc kiểu Man, nên có thể chứa pointer tới đối tượng của lớp Man. Không chứa được pointer tới đối tượng của lớp Student. Tham khảo: Giáo trình: [1] mục 5.2 Không đúng Điểm: 0/1. Câu10 [Góp ý] Điểm : 1 Đoạn mã sau có lỗi biên dịch nào? class Student { public String sayHello(){ return "Student"; } } public class Man extends Student{ public int sayHello() { return 0; } } Chọn một câu trả A) lời Có lỗi biên dịch:sayHello() in Man cannot override sayHello() in Student is not compatible with java.lang.String B) Không có lỗi biên dịch. C) Có lỗi biên dịch:sayHello() in Man cannot override sayHello() in Student final D)
  19. Có lỗi biên dịch:sayHello() in Man and in Student has the same access m Đúng. Đáp án đúng là: Có lỗi biên dịch:sayHello() in Man cannot override sayHello() in Student return type int is not compatible with java.lang.String Vì: Lớp Man định viết đè sayHello() được viết ở Student, nhưng có kiểu dữ liệu trả về là int không thể chuy ển thành String được. Và sayHello() không được đánh dấu là final, nên có thể được ghi đè. sayHello() ở cả hai lớp đều có cùng access modifier, điều này là hợp lệ. Tham khảo: Giáo trình: [1] mục 5.2 1 [Góp ý] Điểm : 1 Đoạn mã sau có lỗi biên dịch gì? public class Person { private String name; protected int age; public static void main(String[] args) { Person p = new Person(); p.name="Tom"; System.out.println(p.name); } } Chọn một câu trả A) Không có lỗi biên dịch. lời B) name has private access. C) age has protected access. D) name has public access. Sai. Đáp án đúng là: Không có lỗi biên dịch. Vì: hàm main ở trong cùng lớp Person, nên có thể truy xuất tới tất cả các trường c ủa Person. Tham khảo: Giáo trình: [1] mục 3.2 Không đúng Điểm: 0/1. Câu2 [Góp ý] Điểm : 1 Câu 1: Trong khi tạo một gói, mã nguồn phải được đặt trong cùng một thư mục với tên của gói. Câu 2: Scanner là lớp thuộc gói java.util Chọn một câu trả A) Cả hai câu đều đúng lời B) Cả hai câu đều sai C) Câu 1 đúng, câu 2 sai D) Câu 2 đúng, câu 1 sai Đúng. Đáp án đúng là: "Cả 2 câu đều đúng" Vì: + Mã nguồn và tên gói phải đặt trong cùng một thư mục + Sanner thuộc gói java.util. Tham khảo: Giáo trình: [1] mục 3.2 Đúng Điểm: 1/1. Câu3 [Góp ý] Điểm : 1 Cho lớp Student như sau: public class Student { private String mark; public String getMark() { return mark; } public void setMark(String mark) {
  20. this.mark = mark; } } và s là đối tường s của Student. Đoạn mã nào sau cho phép thay đổi điểm của s thành "10"? Chọn một câu trả A) s.setMark("10"); lời B) s.setMark(10); C) s.mark=10; D) s.mark="10" Sai. Đáp án đúng là: s.setMark("10"); Vì: Phương thức này nhận xâu "10" và thay đổi thuộc tính mark của s. Đáp án s.setMark(10); sai vì truyền số 10 thuộc int vào phương thức setMark, mà setMark yêu cầu đầu vào là String. Đáp án s.mark=10 và s.mark="10" là sai vì mark có mức truy xuất là private. Tham khảo: Giáo trình: [1] mục 3.2 Không đúng Điểm: 0/1. Câu4 [Góp ý] Điểm : 1 Cho khai báo mảng sau: 1: String[][] str = {"lap", "trinh", "java"}; 2: System.out.println(str[1][1]); Lệnh trên in ra cái gì? Chọn một câu trả A) trinh lời B) java C) Lỗi biên dịch ở dòng 1 D) Không in ra gì Đúng. Đáp án đúng là: Lỗi biên dịch ở dòng 1 + Lỗi ở dòng lệnh 1, sai cú pháp khai báo mảng 2 chiều Tham khảo: Giáo trình: [1] mục 4.3 Đúng Điểm: 1/1. Câu5 [Góp ý] Điểm : 1 Trong các khai báo sau đâu là khai báo không hợp lệ? Chọn một câu trả A) int a1[][] = new int[][3]; lời B) int a2[][] = new int[2][3]; C) int a3[][] = new int[2][]; D) int a4[][] = {{}, {}, {}}; Đúng. Đáp án đúng là: int a1[][] = new int[][3]; Vì: + Bắt buộc phải xác định số dòng trong khai báo mảng hai chiều. Tham khảo: Giáo trình: [1] mục 4.3 Đúng Điểm: 1/1. Câu6 [Góp ý] Điểm : 1

Bài tập trắc nghiệm java có đáp án năm 2024