200+ câu trắc nghiệm Java cơ bản có đáp án - Phần 5
30 câu hỏi
StringBuffer s = new StringBuffer("hello how are you how?");
int x = s.indexOf("ow");
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
7
6
5
Lỗi biên dịch
Chọn đáp án A
Vì:
Hàm indexOf trả về vị trí đầu tiên xuất hiện của chuỗi ow trong chuỗi s(là ở vị trí thứ 7).
1: int index = 1;
2: boolean[] test = new boolean[3];
3: boolean foo= test [index];
Kết quả mà foo nhận được sau phép gán là?
Chọn một Câu trả lời
foo có giá trị là 0.
foo có giá trị là null.
foo có giá trị là true.
foo có giá trị là false.
Chọn đáp án D
Vì:
Theo ngầm định khi tạo mảng dữ liệu kiểu logic thì tất cả các phần tử đều nhận giá trị false
Lệnh nào SAI?
Chọn một Câu trả lời
float f2[] = new float[];
float[] f1 = new float[3];
float f3[] = new float[3];
float f5[] = { 1.0f, 2.0f, 2.0f };
Chọn đáp án A
Vì:
khi khởi tạo mảng, số phần tử phải xác định
Đ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ả lời
Không có lỗi biên dịch.
Có lỗi biên dịch: Incompatible type, required Man, found Student.
Có lỗi biên dịch:Incompatible type, required Student, found Man.
Do not use extends to make subclass..
Chọn đáp án B
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.
G/s đã khai báo lớp Student như sau:
Class Student
{
Public String name;
}
Đâu là cách tạo lớp Man là lớp con của Student?
Chọn một Câu trả lời
public class Man extends Student{ }
public class Man extend Student{ }
public class Man :Student{ }
public class Man => Student{ }
Chọn đáp án A
Vì:
Theo cú pháp khai báo lớp kế thừa trong java, từ khóa extends được dùng để mô tả một lớp là lớp con của lớp khác.
1. class Super {
2. public int getLenght() { return 4; }
3. }
4.
5. public class Sub extends Super {
6. public long getLenght() { return 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() + "," + sub.getLenght() );
13. }
14. }
Chương trình sẽ in ra cái gì?
Chọn một Câu trả lời
4,4
4,5
5,4
Lỗi biên dịch
Chọn đáp án D
Vì:
Phương thức getLenght() trong lớp cha kiểu int, lớp con không thể thực hiện ghi đè phương thức này với kiểu long.
1. class TestSuper {
2. TestSuper(int i) { }
3. }
4. class TestSub extends TestSuper{ }
5. class TestAll {
6. public static void main (String [] args) {
7. new TestSub();
8. }
9. }
Kết quả in ra của đoạn mã trên là gì?
Chọn một Câu trả lời
Lỗi biên dịch
Đoạn mã chạy không sinh lỗi
Lỗi đưa ra dòng 7
Lỗi đưa ra dòng 2
Chọn đáp án A
Vì:
+ Lớp con kế thừa TestSub chưa triển khai hàm constructor của lớp cha
Đọ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
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.
Đ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.
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).
Bạn đang viết một đoạn mã cho 1 lớp, lớp này nằm trong package test và sử dụng các thành phần trong gói java.util. Lựa chọn đoạn mã để khởi đầu cho file dữ liệu nguồn.
Chọn một Câu trả lời
import java.util.*;
package test;
import java.util.*;
import java.util.*;
package test;
package test;
Chọn đáp án B
Vì:
Lớp thuộc package test và sử dụng lớp nằm trong gói java.util thì phải thực hiện
package test;
import java.util.*;
Chương trình sau in ra mà 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: names = new String[5];
05: System.out.println(names[2]);
06: }
07: }
Chọn một Câu trả lời
Có lỗi biên dịch: use new keyword to create object
Peter
Anna
null
Chọn đáp án D
Vì:
+ Lệnh 3 sẽ khai báo một mảng names và khởi tạo các giá trị cho mảng lần lượt là “John”, “Anna”,….
+ Tuy nhiên lệnh sau (4) lại tạo lại mảng names và không gán giá trị cho các phần tử mảng => các phần tử sẽ có giá trị null
1: int index = 1;
2: boolean[] test = new boolean[3];
3: boolean foo= test [index];
Kết quả mà foo nhận được sau phép gán là?
Chọn một Câu trả lời
foo có giá trị là 0.
foo có giá trị là null.
foo có giá trị là true.
foo có giá trị là false.
Chọn đáp án D
Vì:
Theo ngầm định khi tạo mảng dữ liệu kiểu logic thì tất cả các phần tử đều nhận giá trị false
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
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.
Đ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 int getAge(int added) {
return super.getAge()+added;
}
}
Không có lỗi biên dịch.
Có lỗi biên dịch: getAge() in Student and Man can not have the same access modifier.
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.
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.
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());
}
}
10
11
10
10
11
11
Không in gì và báo lỗi
Chọn đáp án B
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
Đ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ả lời
Không có lỗi biên dịch.
Có lỗi biên dịch: Incompatible type, required Man, found Student.
Có lỗi biên dịch:Incompatible type, required Student, found Man.
Do not use extends to make subclass..
Chọn đáp án B
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.
Cho hai lớp Student và Main như sau:
package java.school;
public class Student {}
--
package java.test;
public class Main {
public static void main(String[] args) { java.school.Student s = new Student();
}
}
Khi biên dịch lớp Main có lỗi biên dịch không? Nếu có là lỗi nào sau:
Chọn một Câu trả lời
Có lỗi biên dịch:
can not find symbol test.Student
Không có lỗi biên dịch.
Có lỗi biên dịch:
Add import java.school.Student
Có lỗi biên dịch:
can not find constructor Student() for Student.
Chọn đáp án A
Vì:
Lớp Student không ở package java.test mà ở java.school, và bạn lại không import vào gói java.test, nên trình biên dịch tìm lớp Student ở cùng package java.test khi bạn không chỉ rõ lớp Student thuộc package nào. Nên khi khai báo biến s thuộc lớp java.school.Student thì đúng, nhưng khi gọi phương thức khởi tạo thì bạn lại không chỉ rõ, nên trình biên dịch sẽ tìm ở java.test. Nhưng không có.
Add import java.school.Student : là một gợi ý, chứ không phải lỗi biên dịch.
Đ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.
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.
Cho lớp Student như sau:
public class Student {
private String mark;
public String getMark() {
return mark;
}
public void setMark(String 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);
s.mark=10;
s.mark="10"
Chọn đáp án A
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.
G/s ta cần xây dựng hàm printArray để in ra dãy số nguyên gồm N phần tử. Đâu là cách mô tả đúng về hàm printArray?
Chọn một Câu trả lời
void printArray(int a[], int size){}
void printArray(int a[size], int size){}
void printArray(int a[], int){}
void printArray(int a[size]){}
Chọn đáp án A
Vì:
khi truyền tham số mảng cho hàm không cần xác định kích thước mảng.
Đoạn chương trình sau sẽ in ra thông tin gì trên màn hình?
11: String a = "ABCD";
12: String b = a.toLowerCase();
13: b.replace(‘a’, ‘d’);
14: b.replace(‘b’, ‘c’);
15: System.out.println(b);
Chọn một Câu trả lời
abcd
ABCD
dccd
dcba
Chọn đáp án A
Vì:
+ Lệnh 11 sẽ tạo xâu a ="ABCD"
+ Lệnh 12 tạo ra xâu b ="abcd"
+ Lệnh 13 sẽ sinh ra xâu mới và thay thế ký tự a bởi d (xâu b không thay đổi)
+ Lệnh 14 sẽ sinh ra xâu mới và thay thế ký tự b bởi c (xâu b không thay đổi)
=> In ra abcd.
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
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)
Đoạn mã sau có lỗi biên dịch nào sau?
class Student {
protected String name;
}
public class Man extends Student{
public static void main(String[] args) {
Man m = new Man();
m.name="John";
}
}
name has protected 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.
Chọn đáp án B
Vì:
thuộc tính name ở Student là protected, nên không lớp con Man được thừa kế.
Đ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.
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.
Đ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.
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).
(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
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
Đ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.
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.
Bạn đang viết một đoạn mã cho 1 lớp, lớp này nằm trong package test và sử dụng các thành phần trong gói java.util. Lựa chọn đoạn mã để khởi đầu cho file dữ liệu nguồn.
Chọn một Câu trả lời
import java.util.*;
package test;
import java.util.*;
import java.util.*;
package test;
package test;
Chọn đáp án B
import java.util.*;
Vì:
Lớp thuộc package test và sử dụng lớp nằm trong gói java.util thì phải thực hiện
package test;
import java.util.*;
(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.
(2) Scanner là lớp thuộc gói java.util
Chọn một Câu trả lời
Cả hai Câu đều đúng
Cả hai Câu đều sai
(1) đúng, (2) sai
(2) đúng, (1) sai
Chọn đáp án A
Đú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
Đoạn mã sau có lỗi biên dịch gì?
public class Person {
private String name;
private 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 private access.
name has public access.
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.








