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

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

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

G/s đã tạo lớp TestException như sau:

public class TestException extends Exception {}

Lớp Test được tạo như sau:

public class Test{

public void runTest () throws TestException {}

1: public void test ()

{

runTest ();

}

}

Hỏi sau test() ở dòng 1 cần đưa vào dòng lệnh nào để chương trình biên dịch thành công ?

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

throws Exception.

catch (Exception e).

throws RuntimeException.

catch (TestException e).

Xem đáp án

Chọn đáp án A

Vì:

tại dòng 4 phải đưa vào lệnh throws Exception thì chương trình sẽ biên dịch thành công.

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

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

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

abstract public class MyClass{

public static void main(String[] args) {

}

}

abstract public class MyClass{

public static void main(String[] args) {

MyClass m = new MyClass() {};

}

}

abstract public class MyClass{

public static void main(String[] args) {

Object m = new MyClass(){};

}

}

abstract public class MyClass{

public static void main(String[] args) {

MyClass m = new MyClass();

}

}

Xem đáp án

Chọn đáp án D

Vì:

Lớp MyClass được khai báo là lớp abstract, nên bạn không thể tạo object trực tiếp từ nó được.

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

Đâu là khai báo biến hợp lệ?

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

!thenew

@thenew

_the_new

1the_new

Xem đáp án

Chọn đáp án C

Vì:

Theo quy tắc khai báo biến thì tên biến nên bắt đầu bởi ký tự hoặc ký tự gạch dưới (_), 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ố

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

Đâu là khai báo và cài đặt phương thức hợp lệ?

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

public void in(){return;}

public int in(){return;}

public double in(){return "";}

public float in(){return "24";}

Xem đáp án

Chọn đáp án A

Vì:

Khi khai báo phương thức in có kiểu dữ liệu trả về là void thì viết lệnh return;. Các đáp án còn lại kiểu dữ liệu trả về cho phương thức không phù hợp với khai báo.

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

Đối tượng nào được sử dụng để bắt lỗi nếu cố tình truy xuất vào phần tử thứ 5 trong mảng a?

1: int []a = {2, 5, 7, 9};

2: System.out.println("a[4] = " + a[4]);

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

NullPoiterException

Exception

ArrayIndexOutOfBoundsException

ArithmeticException

Xem đáp án

Chọn đáp án C

Vì:

+ ArrayIndexOutOfBoundsException là đối tượng được định nghĩa trong java nhằm xử lí các lỗi về chỉ số của mảng

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

Đọc đoạn mã sau:

1: class Super {

2: public Integer getLenght() { return new Integer(4); }

3: }

4:

5: public class Sub extends Super {

6: public Long GetLenght() { return new Long(5); }

7:

8: public static void main(String[] args) {

9: Super sooper = new Super();

10: Sub sub = new Sub();

11: System.out.println(

12: sooper.getLenght().toString() + "," +

13: sub.getLenght().toString() );

14: }

15: }

Chương trình sẽ in ra thông tin gì?

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

4,4

4,5

5,4

5,5

Xem đáp án

Chọn đáp án A

Vì:

+ Trong chương trình đã tạo ra 2 lớp là Super và Sub kế thừa từ Super. Trong hàm main lệnh 10,11,12,13 sẽ gọi phương thức getLength() của lớp Super (vì lớp Sub kế thừa từ Super) => in ra 4,4

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

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

class Student {

private String name;

}

public class Man extends Student{

public static void main(String[] args) {

Man m = new Man();

m.name="John";

}

}

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

name has private access in Student.

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

class Man has no attribute name.

class Man has no attribute or method name.

Xem đáp án

Chọn đáp án A

Vì:

thuộc tính name ở Student là private, nên không lớp con Man không được thừa kế.

Lớp Man vẫn chứa thuộc tính name thông qua lớp Student, nhưng không thể truy xuất được.

8. 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).

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

Đọc đoạn code sau

1: int x = 30;

2: int y = 10;

3: if (x = y) {

4: System.out.println("x = " + x);

5: }

Kết quả là gì?

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

x = 10

x = 30

Biên dịch lỗi.

Đoạn code không có lỗi nhưng không đưa ra kết quả gì. Đáp án

Xem đáp án

Chọn đáp án C

Vì:

+ Không thể đặt lệnh gán x=y vào làm biểu thức kiểm tra điều kiện của lệnh if

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

Chỉ ra các cách định nghĩa lớp abstract hợp lệ?

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

class A {abstract void unfinished(){}}

class A {abstract void unfinished();}

abstract class A {abstract void unfinished();}

public class abstract A {abstract void unfinished();}

Xem đáp án

Chọn đáp án C

Vì:

cú pháp khai báo lớp abstract

abstract class ten_lop{ … }

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

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

Tên của chương trình

Số lượng tham số

Tham số đầu tiên của danh sách tham số

Không Câu nào đúng

Xem đáp án

Chọn đáp án C

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

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

Tên biến nào sau không hợp lệ?

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

2variable

variable2

_whatarevariable

_3_

Xem đáp án

Chọn đáp án A

Vì:

theo quy tắc đặt tên biến

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

G/s cần tạo một lớp MyClass là abstract, khai báo nào sau đây là SAI?

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

public abstract class MyClass {}

abstract public class MyClass { public int sum(int x, int y){return x+y;}}

abstract class MyClass {}

public class MyClass {}

Xem đáp án

Chọn đáp án D

Sai. Đáp án đúng là: public class MyClass {}

Vì: đây là khai báo của một lớp bình thường.

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

Đâ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?

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

class Cat {String name = "noname";}

public class Cat{

String name;

public Cat(){name = "noname";}

}

public class Cat{

String name;

public Cat(String x){name = x;}

}

public class Cat{

String name;

public Cat(){

String name = "noname";

}

}

Xem đáp án

Chọn đáp án D

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.

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

Đoạn mã nào sau đây in ra màn hình 2 chữ Hello trên hai dòng?

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

System.out.println("\t Hello \n Hello");

System.out.println("\t Hello \t Hello");

System.out.println("\n Hello \t Hello");

System.out.println("\n Hello Hello");

Xem đáp án

Chọn đáp án A

Vì:

Để in ra màn hình ở dòng mới ta phải dùng ký tự đặc biệt \n, nên chỉ có ở đáp án A đúng. Đáp án C kí tự xuống dòng (\n) ở ngay đầu dòng do đó 2 chữ Hello vẫn in trên một dòng.

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

Đọc đoạn code sau:

public class Test {

public static void aMethod() throws Exception {

try {

throw new Exception();

} finally {

System.out.println("finally");

}

}

public static void main(String args[]) {

try {

aMethod();

} catch (Exception e) {

System.out.println("exception");

}

System.out.println("finished");

}

}

Kết quả là gì?

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

finally

exception, finished

finally, exception, finished

Lỗi biên dịch.

Xem đáp án

Chọn đáp án C

Vì:

+ Lệnh đầu tiên trong hàm main() được gọi thực hiện => gọi phương thức aMethod() => lệnh trong khối finally của aMethod() được thực hiện => in ra chữ finally, đồng thời phương thức này ném ra một ngoại lệ do đó lệnh trong khối catch của hàm main() sẽ được thực hiện => in ra chữ exception và cuối cùng lệnh

System.out.println("finished"); sẽ thực hiện để in ra chữ finished

Kết quả là: finally, exception, finished

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

1.1:package a;

1.2:class A1{}

1.3://///////

2.1:package b;

2.2:

2.3: class B1{

2.4: public void test(){

2.5: A1 a1 = new A1();

2.6: }

2.7: }

Muốn sử dụng lớp A1 của gói a thì dòng 2 phải điền gì?

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

Không điền gì

package a;

import a;

import a.;

Xem đáp án

Chọn đáp án D

Vì:

Lệnh import a. cho phép lớp b có thể sử dụng tất cả các thành phần của gói a

18. 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{

public double getAge() {

return 11.2;

}

}

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

Có lỗi biên dịch:getAge() in Man cannot override getAge() in Student return type int is not compatible with java.lang.int

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

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

Có lỗi biên dịch:getAge() 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 đè getAge() được viết ở Student, nhưng có kiểu dữ liệu trả về là double không thể chuyển thành int được. Nên đáp án B sai. Và getAge() không được đánh dấu là final, nên có thể được ghi đè, nên đáp án C là sai. getAge() ở cả hai lớp đều có cùng access modifier, điều này là hợp lệ. Nên đáp án D là sai.

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

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

Cách nào để tạo Scanner để đọc thông tin từ bàn phím?

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

Scanner input= new Scanner(System.in);

Scanner input= new Scanner("System.in");

Scanner input= new Scanner(Systemin);

Scanner input= new Scanner(in);

Xem đáp án

Chọn đáp án A

Vì:

Luồng dữ liệu từ bàn phím là thuộc tính in trong lớp System, nên ta phải truyền System.in vào phương thức khởi tạo của Scanner chứ không phải xâu ký tự "System.in" như ở đáp án B hoặc cách gọi Systemin ở C hoặc in ở đáp án D.

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

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

1: int x = 10;

2: double y = 0.0;

3: System.out.println("Ket qua phep toan: " + (x/y));

Đoạn mã trên khi thực thi sẽ in ra kết quả gì?

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

Ket qua phep toan: 0

Lỗi biên dich

Ket qua phep toan: Infinity

Ket qua phep toan:

Xem đáp án

Chọn đáp án C

Vì:

Không xác định khi chia một số nguyên cho một số thực có giá trị là 0.0.

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

Đâu KHÔNG phải là một khai báo của abstract class?

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

public abstract class MyClass {}

abstract public class MyClass {

public abstract int sum(int x, int y);

}

abstract class MyClass {}

public class MyClass {}

Xem đáp án

Chọn đáp án D

Vì:

Đây là khai báo của một lớp bình thường.

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

1: Scanner c = new Scanner(System.in);

2: int x = c.next();

3: System.out.println("x = " + x);

Chương trình trên sẽ thực thi thế nào?

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

Tại dòng 2 khi người dùng nhập giá trị 5, chương trình sẽ in ra x = 5

Chương trình không thể chạy vì lỗi dòng 2 do không thể nhập chuỗi và gán cho số nguyên

Tại dòng 2 khi người dùng nhập giá trị 5, chương trình sẽ in ra x =

Đối tượng NumberFormatException được tung ra để bắt lỗi chương trình.

Xem đáp án

Chọn đáp án B

Vì:

Đối tượng RuntimeException được tung ra để bắt lỗi chương trình và chương trình không thể chạy do không thể nhập chuỗi và gán cho số nguyên.

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

Trong chương trình thứ tự của các lệnh như thế nào là sai?

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

try...catch...finally

try...catch...catch...finally

try...finally

try

Xem đáp án

Chọn đáp án D

Vì:

+ Thứ tự các lệnh là try…catch….finally

+ Có thể sử dụng lồng nhau nhiều khối try

+ Khối try thì bắt buộc phải có catch

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

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

class Person {

public String name;

private 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 private access.

age has private access.

name has public access.

Xem đáp án

Chọn đáp án A

Vì:

name có mức truy xuất là public, nên có thể được truy xuất từ Main(Nên đáp án A đúng, B sai, D sai). Và trong lớp Main không có truy xuất vào thuộc tính age, bởi thế thuộc tính age không gây ra lỗi. Nên đáp án C sai.

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

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

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

name has private access.

age has protected access.

name has public access.

Xem đáp án

Chọn đáp án A

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.

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

StringBuffer s = new StringBuffer("hello how are you?");

int x = s.charAt(6);

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

102

104

h

Lỗi biên dịch

Xem đáp án

Chọn đáp án B

Vì:

s.charAt(6) truy xuất phần tử thứ 7 là kí tự 0, trong mã asscii thì kí tự 0 là 104.

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

Đáp án 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

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

Tên biến nào sau không hợp lệ?

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

2variable

variable2

_whatarevariable

_3_

Xem đáp án

Chọn đáp án A

Vì:

theo quy tắc đặt tên biến