300 Câu hỏi trắc nghiệm lập trình Java có đáp án - Phần 1
50 câu hỏi
Ngôn ngữ Java có phân biệt chữ hoa – chữ thường
Java là ngôn ngữ lập trình hướng đối tượng
Dấu chấm phẩy được sử dụng để kết thúc lệnh trong java
Chương trình viết bằng Java chỉ có thể chạy trên hệ điều hành win
double
int
long
long float
Chọn đáp án D .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.
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
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()
Nhập một số nguyên
Nhập một ký tự
Nhập một chuỗi
Không có phương thức này
Chọn đáp án C.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.
Netbeans
Eclipse
JDK
Java Platform
Chọn đáp án D. Vì: Netbeans hoặc Eclipse là môi trường lập trình, chứ không phải để chạy 0ứng dụng Java. JDK ở đáp án C là để phát triển ứng dụng Java. Java Platform là vừa đủ để chạy ứng dụng Java.
java.net
java.io
java.util
java.awt
Chọn đáp án C. Vì: Theo cấu trúc của gói java.util
String
Scanner
Integer
System
Chọn đáp án B
Java
Oak
Cafe
James golings
Chọn đáp án B.Vì: Theo lịch sử ngôn ngữ java tên đầu tiên của java là oak.
XX.Display;
XX.Display();
objX.Display();
Display();
Chọn đáp án C .Vì: Để truy xuất và phương thức của đối tượng ta sử dụng cú pháp: tendoituong.tenphuongthuc();
Tên lớp
Thuộc tính
Phương thức
Biến
Chọn đáp án D.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
Cả hai câu đều đúng
Cả hai câu đều sai
Câu 1 đúng, câu 2 sai
Câu 2 đúng, câu 1 sai
Chọn đáp án C .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
public class Main {
public static void main(String[] args) {
int x = -1;
String y = x + 3;
System.out.println("x = " + x + "y = " + y);
}
}
x=-1 y=2
Lỗi biên dịch: Uncompilable source code - incompatible types
x=-1 y=-13
x=-1 y=4
Chọn đáp án B .Vì: y là chuỗi, x là số không thể thực hiện cộng chuỗi và số.
Các lớp được tạo thể hiện từ đó
Một thể hiện của lớp
Một tham chiếu đến một thuộc tính
Một biến
Chọn đáp án B .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
(1) rollNumber
(2) $rearly_salary
(3) double
(4) $$_
(5) mount#balance
12345
123
124
125
Chọn đáp án C
int i = 1,
j = 10;
do {
if (i > j) {
break;
}
j--;
} while (++ i < 5 );
System.out.printIn("i = " + i + " and j = " + j);
i = 6 and j = 5
i = 5 and j = 5
i = 6 and j = 4
i = 5 and j = 6
Chọn đáp án D.Vì:
+ 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
2
7
4
9
Chọn đáp án D. 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.
(a) byte (1) 256
(b) char (2) 5000
(c)int (3) 4899.99
(d) short (4)126
(e) double (5) 'F'
a-4, b-5, c-2, d-1, e-3
a-1, b-2, c-2, d-1, e-3
a-1, b-5, c-4, d-4, e-3
a-5, b-4, c-1, d-2, e-3
Chọn đáp án A .Vì: byte: 126, char:'F', int:5000, short: 256, double:4899.99
int
byte
char
String
Chọn đáp án D.Vì: Kiểu dữ liệu String chứa giá trị bao gồm cả chữ và số.
int i = 0;
do {
flag = false;
System.out.print(i++);
flag = i < 10;
continue;
} while (( flag ) ? true: false);
000000000
0123456789
Lỗi biên dịch
Đoạn mã thực thi nhưng không in ra kết quả gì
Chọn đáp án B.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
theOne
the One
1the_One
$the One
Chọn đáp án A.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ố.
true
x==true;
1==1
!x
Chọn đáp án D.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.
2
1
3
4
Chọn đáp án A. 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.
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));
}
}
value = 3
value = 4
value = 5
value = 7
Chọn đáp án D.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
class A {
int x = 10;
public void calTotal(A a) {
a.x = 12;
System.out.println(a.x);
}
}
10
12
22
24
Chọn đáp án B.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.
Class Cat{}
class public Cat(){}
class Cat{}
public Cat class{}
Chọn đáp án C
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);
}
}
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 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.
ngoài lớp. Chọn một câu trả lời
Câu 1 sai, câu 2 đúng
Câu 1 đúng, câu 2 sai
Cả 2 câu cùng đúng
Cả 2 câu cùng sai [Không đúng]
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 đó.
int a1[][] = new int[][3];
int a2[][] = new int[2][3];
int a3[][] = new int[2][];
int a4[][] = {{}, {}, {}};
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.
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.
Chọn đáp án C.Vì: biểu thức array.length trả về số phần tử trong mảng.
public class Main {
public static void main(String[] args) {
String names[] = {
"John",
"Anna",
"Peter",
"Victor",
"David"
};
System.out.println(names[2]);
}
}
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)
Chọn một câu trả lời
parent
super
this
static
Chọn đáp án B.Vì: Từ khóa super được sử dụng trong lớp con để gọi phương thức của lớp cha.
class Student {
public String sayHello() {
return "Student";
}
}
public class Man extends Student {
public int sayHello() {
return 0;
}
}
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
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ệ.
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);
}
}
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 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.
ngoài lớp. Chọn một câu trả lời
Câu 1 sai, câu 2 đúng
Câu 1 đúng, câu 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 đó.
int a1[][] = new int[][3];
int a2[][] = new int[2][3];
int a3[][] = new int[2][];
int a4[][] = {{}, {}, {}}
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.
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
Chọn đáp án C
public class Main {
public static void main(String[] args) {
String names[] = {
"John",
"Anna",
"Peter",
"Victor",
"David"
};
System.out.println(names[2]);
}
}
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)
class Student {
}
public class Man extends Student {
public static void main(String[] args) {
Man m = new Student();
}
}
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.
Khi thực hiện lệnh: A a = new A();
a.calTotal(a);
class A {
int x = 10;
public void calTotal(A a) {
a.x = 12;
System.out.println(a.x);
}
}
10
12
22
44
Chọn đáp án B.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.
Class Cat{}
class public Cat(){}
class Cat{}
public Cat class{}
Chọn đáp án C.Vì: Theo cú pháp khai báo lớp
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"; } }
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.
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);
}
}
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 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.
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ả lời
Câu 1 sai, câu 2 đúng
Câu 1 đúng, câu 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 đó.
java
class
jav
exe
Chọn đáp án B
1
2
3
4
Chọn đáp án B
Là một thành phần của Java platform dùng để đọc mã bytecode trong file .class
Là chương trình biên dịch của java dùng để biên dịch file nguồn java thành mã bytecode
Là chương trình chạy cho java
Tất cả các đáp án đều đúng
Chọn đáp án A
Microsoft Windows
Linux
Sun Solaris OS
Tất cả các đáp án đều đúng.
Chọn đáp án D
Thư viện mã nguồn của Java.
Là thư viện chứa các thành phần phần mềm tạo sẵn cung cấp các chức năng cho chương trình Java.
Thư viện cung cấp giao diện đồ họa cho chương trình Java.
Tất cả đều sai.
Chọn đáp án B
Tất cả đáp án trên
Giao diện lập trình ứng dụng
Bộ công cụ giao diện người dùng
Thư viện tích hợp
Chọn đáp án A
1
2
3
4
Chọn đáp án C



