200+ câu trắc nghiệm Java cơ bản có đáp án - Phần 4
Đề thi

200+ câu trắc nghiệm Java cơ bản có đáp án - Phần 4

A
Admin
Đại họcTrắc nghiệm tổng hợp28 lượt thi
20 câu hỏi
1. Trắc nghiệm
1 điểm

Đoạn mã sau có lỗi biên dịch gì?

class Person {

protected String name;

public int age;

};

public class Main {

public static void main(String[] args) {

Person p = new Person();

p.name="Tom";

}

}

Chọn một Câu trả lời

Không có lỗi biên dịch.

name has protected access.

age has protected access.

name has public access.

Xem đáp án

Chọn đáp án B

Vì:

+ name là thành phần protected do đó không thể truy xuất từ bên ngoài lớp (chỉ có thể truy xuất từ bên trong lớp và các lớp con).

2. Trắc nghiệm
1 điểm

Trong các khai báo sau đâu là khai báo không hợp lệ?

Chọn một Câu trả lời

int a1[][] = new int[][3];

int a2[][] = new int[2][3];

int a3[][] = new int[2][];

int a4[][] = {{}, {}, {}};

Xem đáp án

Chọn đáp án A

Vì:

+ Bắt buộc phải xác định số dòng trong khai báo mảng hai chiều.

3. Trắc nghiệm
1 điểm

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ả lời

Có lỗi biên dịch: use new keyword to create object

Peter

Anna

Victor

Xem đáp án

Chọn đáp án B

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)

4. Trắc nghiệm
1 điểm

String s = "cabcab";

StringTokenizer sten = new StringTokenizer(s, "ab");

int x = sten.countTokens(); System.out.println(x);

Trong đoạn mã trên x nhận giá trị bao nhiêu?

Chọn một Câu trả lời

1

0

2

Biên dịch lỗi

Xem đáp án

Chọn đáp án C

Vì:

Đối tượng StringTokenizer chia chuỗi "cabcab" thành các token theo chuỗi "ab" thì được 2 token là cab, cab.

5. Trắc nghiệm
1 điểm

Đoạn mã sau có lỗi biên dịch KHÔNG? Nếu có là lỗi nào sau?

class Student {}

public class Man extends Student{

public boolean isMan(){

return true;

}

}

Chọn một Câu trả lời

Không có lỗi biên dịch.

Có lỗi biên dịch:class Student is empty.

Có lỗi biên dịch:class Man has no constructor.

Có lỗi biên dịch:class Student is empty, class Man has no constructor.

Xem đáp án

Chọn đáp án A

Vì:

Chúng ta có thể khai báo các lớp không có thuộc tính và phương thức trống(empty).

Khi một lớp không có constructor, trình biên dịch sẽ tự động thêm vào một constructor mặc định.Vậy đoạn mã đã cho không có lỗi biên dịch nào.

6. Trắc nghiệm
1 điểm

Đ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 String sayHello() {

return "man";

}

public static void main(String[] args) {

Man m = new Student();

System.out.println(m.sayHello());

}

}

Chọn một Câu trả lời

Có lỗi biên dịch:Incompatible type, requiered Man, found Student.

Không có lỗi biên dịch. In ra màn hình "man"

Có lỗi biên dịch:access modified of sayHello in Student and Man are different

Không có lỗi biên dịch. In ra màn hình "student"

Xem đáp án

Chọn đáp án A

Vì:

m thuộc lớp Man, nhưng lại dùng để trỏ đển đối tượng của Student mà Man không phải là lớp con của Student.

Và access modified của cùng phương thức ở lớp con chỉ cần mạnh hơn hoặc bằng cảu lớp cha la được.

7. Trắc nghiệm
1 điểm

Đoạn mã sau có lỗi biên dịch nào?

class Student {

public int getAge(){

return 10;

}

}

public class Man extends Student{

protected int getAge(int added) {

return super.getAge()+added;

}

}

Chọn một Câu trả lời

Không có lỗi biên dịch.

Có lỗi biên dịch: getAge() has in Man can not have weaker same access modifier than in Student.

Có lỗi biên dịch:call to super, must be the first in constructor in class Man.

Có lỗi biên dịch: getAge() in Student and Man can not have the same access arguments.

Xem đáp án

Chọn đáp án A

Vì:

getAge() ở Student và Man có arguments khác nhau, nên chúng là các phương thức khác nhau.

8. Trắc nghiệm
1 điểm

Khai báo lớp Student trong package java.class sau có lỗi biên dịch hay không, nếu có thì là lỗi gì?

package java.class;

class Student {}

Chọn một Câu trả lời

Có lỗi biên dịch incorrect package

Có lỗi biên dịch vì Student is empty

Không có lỗi biên dịch

Có lỗi biên dịch package must be java

Xem đáp án

Chọn đáp án A

Vì: Ta có:

Tên của package không thể trùng với từ khóa class

Một lớp có thể không có khai báo gì.

Tên package chỉ cần là một định danh đúng.

9. Trắc nghiệm
1 điểm

Đọ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ả lời

Lỗi biên dịch dòng 2.5, 2.6, 2.7

Lỗi biên dịch dòng 2.5

Lỗi biên dịch dòng 2.6, 2.7

xA = 12; a.yA = Hello

Xem đáp án

Chọn đáp án D

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.

10. Trắc nghiệm
1 điểm

(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.

(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ả lời

(1) sai, (2) đúng

(1) đúng, (2) sai

Cả 2 Câu cùng đúng

Cả 2 Câu cùng sai

Xem đáp án

Chọn đáp án B

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 đó.

(1) đúng, (2) sai

11. Trắc nghiệm
1 điểm

Phát biểu nào sau đây là đúng:

Chọn một Câu trả lời

Mảng có thể lưu giữ các phần tử thuộc nhiều kiểu dữ liệu khác nhau

Chỉ số của mảng có thể sử dụng kiểu số thực (float, double)

Biểu thức array.length được sử dụng để trả về số phần tử trong mảng

Một phần tử của mảng không thể truyền vào trong một phương thức.

Xem đáp án

Chọn đáp án C

Vì:

biểu thức array.length trả về số phần tử trong mảng.

12. Trắc nghiệm
1 điểm

Cho xâu kí tự s=”ABCDEF”. Để lấy kỳ tự thứ ‘E’ của xâu ký tự s(String) dùng Câu lệnh nào sau đây?

Chọn một Câu trả lời

s.charAt(5)

s.charAt(4)

s[5]

s[4]

Xem đáp án

Chọn đáp án B

Vì:

Xâu kí tự có chỉ số bắt đầu từ 0.

13. Trắc nghiệm
1 điểm

1. public class Delta {

2. static boolean foo(char c) {

3. System.out.print(c);

4. return true;

5. }

6. public static void main( String[] argv ) {

7. int i =0;

8. for ( foo(‘A’);

foo(‘B’)&&(i<2); foo(‘C’)){

9. i++ ;

10. foo(‘D’); 12. }

13. }

14. }

Kết quả in ra của đoạn mã trên là gì?

Chọn một Câu trả lời

ABDCBDCB

ABCDABCD

Lỗi biên dịch

Chương trình không lỗi, nhưng khi chạy sẽ sinh lỗi

Xem đáp án

Chọn đáp án A

Vì:

+ Bắt đầu vòng lặp sẽ gọi foo(‘A’) => In ra chữ A

+ Thực hiện lệnh foo(‘B’) && i<2 => in ra B

+ Thực hiện foo(‘D’) => in ra D

+ Thực hiện foo(‘C’) => in ra C

Tiếp theo tăng i lên 1 và thực hiện lần lượt các lệnh foo(‘B’), foo(‘D’), foo(‘C’) => in ra BDC

Và cuối cùng tăng i=2 rồi thực hiện lệnh foo(‘B’)&i<2 => in ra B và kết thúc vòng lặp

ð In ra là: ABDCBDCB

14. Trắc nghiệm
1 điểm

Đoạn mã sau có lỗi biên dịch KHÔNG? Nếu có là lỗi nào sau?

class Student {

private String name;

public Student(String name) {

this.name=name;

}

}

public class Man extends Student{

}

Chọn một Câu trả lời

Không có lỗi biên dịch.

Có lỗi biên dịch: can not find symbol constructor Student()

Có lỗi biên dịch:variable name in Student can not be private.

Có lỗi biên dịch:variable name in Student is private;can not find symbol constructor Student()

Xem đáp án

Chọn đáp án B

Vì: lớp Man là lớp con của Student. Do lớp Man không có constructor nên trình biên dịch tự động thêm vào một constructor mặc định không có tham số và cũng gọi đến constructor mặc định của lớp cha. Nhưng lớp Student lại không có trình biên dịch mặc định. Nên có lỗi biên dịch là không tìm thấy constructor mặc định ở lớp Student. Và thuộc tính có thể là private.

15. Trắc nghiệm
1 điểm

Đ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ả lời

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

Không có lỗi biên dịch.

Có lỗi biên dịch:sayHello() in Man cannot override sayHello() in Student because it is final

Có lỗi biên dịch:sayHello() in Man and in Student has the same access modifier

Xem đáp án

Chọn đáp án A

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ệ.

16. Trắc nghiệm
1 điểm

Đ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 String sayHello() {

return "man";

}

public static void main(String[] args) {

Man m = new Student();

System.out.println(m.sayHello());

}

}

Chọn một Câu trả lời

Có lỗi biên dịch:Incompatible type, requiered Man, found Student.

Không có lỗi biên dịch. In ra màn hình "man"

Có lỗi biên dịch:access modified of sayHello in Student and Man are different

Không có lỗi biên dịch. In ra màn hình "student"

Xem đáp án

Chọn đáp án A

Vì:

m thuộc lớp Man, nhưng lại dùng để trỏ đển đối tượng của Student mà Man không phải là lớp con của Student.

Và access modified của cùng phương thức ở lớp con chỉ cần mạnh hơn hoặc bằng cảu lớp cha la được.

17. Trắc nghiệm
1 điểm

Đoạn mã sau in ra màn hình xâu ký tự nào sau:

class Student {

public String sayHello(){

return "Student";

}

}

public class Man extends Student{

public String sayHello() {

return super.sayHello();

}

public static void main(String[] args) {

Student m = new Student();

System.out.println(m.sayHello());

}

}

Chọn một Câu trả lời

Student

Man

Student Man

Man Student

Xem đáp án

Chọn đáp án A

Vì:

s là đối tượng của Student, nên phương thức được gọi là của Student.

18. Trắc nghiệm
1 điểm

Đọc đoạn mã sau:

1.0: package pac02;

1.1: public class ClassA {

1.2: protected 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ả lời

Lỗi biên dịch dòng 2.7

Lỗi biên dịch dòng 2.5

Lỗi biên dịch dòng 2.5, 2.7

xA = 12; a.yA = Hello

Xem đáp án

Chọn đáp án C

Vì: Thuộc tính xA của lớp ClassA được khai báo với từ khóa protected nên không được truy xuất từ ngoài gói pac02.

19. Trắc nghiệm
1 điểm

1: package a;

2: class A{protected int x;}

3: class B{

4: public void test(){

5: A a = new A();

6: a.x = 9;

7: System.out.println(a.x);

8: }

9:public static void 10:main(String[] agrs)

11: {

12: B b1=new B();

13: b1.test();

14: }

15: }

Khi chạy đoạn chương trình trên sẽ thông báo gì?

Chọn một Câu trả lời

Chương trình lỗi dòng 7

x = 9

Chương trình lỗi dòng 6

x không nhận giá trị gì

Xem đáp án

Chọn đáp án B

Vì:

+ Lớp A và lớp B trong cùng một package, lớp B sinh ra một đối tượng a của lớp A và thiêt lập thuộc tính x của a là 9 (Điều này hoàn toàn thực hiện được vì x là protected) => in ra giá trị 9

20. Trắc nghiệm
1 điểm

Cho lớp Student như sau:

public class Student {

private int mark;

public int getMark() {

return mark;

}

public void setMark(int mark) {

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ả lời

s.setMark(10);

s.setMark(10.0);

s.mark=10;

s.mark=10.0;

Xem đáp án

Chọn đáp án A

Vì:

Phương thức này nhận 10 là số nguyên và thay đổi thuộc tính mark của s.

s.setMark(10.0); sai vì truyền số 10.0 thuộc float vào phương thức setMark, mà setMark yêu cầu đầu vào là int.

mark có mức truy xuất là private nên phương thức s.mark=10; và s.mark=10.0; là sai