200+ câu trắc nghiệm Java cơ bản có đáp án - Phần 9
24 câu hỏi
(1) Phương thức được khai báo với từ khóa abstract được sử dụng khi bạn muốn viết các đoạn code đầy đủ trong nó.
(2) Phương thức được khai báo với từ khóa final được sử dụng khi bạn muốn viết các đoạn code đầy đủ trong nó.
Chọn một Câu trả lời
(1) đúng, (2) sai
(1) sai, (2) đúng
Cả 2 Câu đều đúng
Cả 2 Câu đều sai
Chọn đáp án D
Vì:
Phương thức abstract là phương thức chưa được cài đặt phần thân.
Đọc đoạn code sau
1: public class ReturnIt {
2: public <return_Type> methodA(int x, double y) {
3: return x / y * 2;
4: }
5: }
Kiểu dữ liệu trả về cho methodA (return_type) ở dòng 2 có thể là kiểu nào?
Chọn một Câu trả lời
int
byte
float
double
Chọn đáp án D
Vì:
Kết quả của phép chia:x/y*2 trả về là một số thực kiểu double nên giá trị trả về của phương thức chỉ có thể là kiểu double
Đọc đoạn mã sau:
1: public abstract class Test {
2: public abstract void methodA();
3:
4: public abstract void methodB()
5: {
6: System.out.printIn("Hello");
7: }
8: }
Làm thế nào để đoạn mã trên biên dịch thành công?
Chọn một Câu trả lời
Cài đặt cụ thể phần thân cho phương thức methodA()
Thay thế từ khóa public ở dòng 2 thành private
Xóa từ khóa abstract ở dòng 4
Xóa từ khóa abstract ở dòng 2
Chọn đáp án C
Vì:
Đáp án “Xóa từ khóa abstract ở dòng 4” là đúng vì khi xóa từ khóa abstract thì phương thức methodB() sẽ trở thành phương thức thông thường, có phần thân.
Khi sử dụng từ khóa new để tạo một đối tượng, nó được tạo ra ở đâu?
Chọn một Câu trả lời
Heap
Garbage collector
Queue
Stack
Chọn đáp án A
Vì: Theo qui định về cấp phát bộ nhớ của java
Đọ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ì.
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
1:public class foo {
2: public static void stringReplace (String text) {
3: text = text.replace ('j' , 'i');
4: }
5: public static void bufferReplace (StringBuffer text) {
6: text = text.append ("C");
7: }
8: public static void main (String args[]) {
9: String textString = new String ("java");
10: StringBuffer textBuffer = new StringBuffer ("java");
11: stringReplace (textString);
12: bufferReplace (textBuffer);
13: System.out.println (textString + textBuffer);
14: }
15:}
Kết quả chương trình trên:
Chọn một Câu trả lời
javajavaC
iavaiava
Chương trình biên dịch thành công, nhưng lỗi trong quá trình chạy.
Lỗi biên dịch
Chọn đáp án A
Vì:
+ Lệnh 9 sinh ra xâu textString có giá trị là "java"
+ Lệnh 10 sinh ra xâu textBuffer có giá trị là "java"
+ Lệnh 11 gọi hàm stringReplace(textString), hàm này sẽ thay thế kí tự j bởi kí tự I tuy nhiên không làm thay đổi giá trị của xâu gốc => textString ="java"
+ Lệnh 12 sẽ gọi hàm bufferReplace (textBuffer), hàm này sẽ thêm vào cuối xâu textBuffer kí tự C => Xâu textBuffer="javaC"
+ Lệnh 13 sẽ in ra "javajavaC"
Đ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");
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.
Đầu ra của chương trình sau là gì?
1: class TestString {
2: public static void main(String[]args){
3: String a = "abc";
4: String b = "abcd";
5: if(a = b) b = "xyz";
6: System.out.println("b = " + b + "a = " + a);
7: }
8: }
Chọn một Câu trả lời
b = null, a = abc
b = abcd, a = abc
b = xyz , a = abc
Lỗi biên dịch
Chọn đáp án D
Vì:
Lỗi dòng lệnh 5, không thể đưa phép gán vào biểu thức điều kiện của lệnh if
Đâu KHÔNG phải là một kiểu dữ liệu nguyên thủy trong Java?
Chọn một Câu trả lời
byte
int
long
big int
Chọn đáp án D
Vì:
byte, int, long ở các đáp án byte, int, long 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 big int.
Đoạn mã sau sẽ in ra mà hình xâu ký tự gì?
public class Main
{
public static void main(String[] args) {
try {
System.out.println("Trying");
}catch(ArithmeticException e){
System.out.println("ArithmeticException");
}catch (Exception ioe){
System.out.println("Exception");
}finally{
System.out.println("Finally");
}
}
}
Chọn một Câu trả lời
Trying
Trying Exception
Trying Final
Trying Exception Final
Chọn đáp án C
Vì:
Đoạn chương trình trên không bao giờ có lỗi, nên sẽ chạy qua khối lệnh trong try(System.out.println("Trying")) rồi sau đó bỏ qua khối lệnh ở mọi catch(System.out.println("Exception"); và System.out.println("ArithmeticException"); ) và cuối cùng là thực hiện khối lệnh ở finally(System.out.println("Finally");).
Nên sẽ in ra màn hình Trying Final
Đọc các tình huống sau
(1) Theo sau khối lệnh try bắt buộc phải là khối catch
(2) Theo sau khối lệnh try có thể là một hoặc nhiều khối catch hoặc khối finally
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 D
Vì:
Trong (1) Theo sau khối lệnh try không nhất thiết phải là khối catch.
Đ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.
Chọn cách tạo exception mới đúng trong các khai báo sau:
Chọn một Câu trả lời
public class MyException {}
public class MyException extends Exception{}
public interface MyException extends Exception{}
class MyException
Chọn đáp án B
Vì:
Exception mới phải là lớp con của Exception, nên đáp án A, D sai và B đúng. Đáp án C sai vì exception mới phải là một lớp(class) chứ không phải interface.
Đọc đoạn mã lệnh sau
1:public class Test {
2: int x;
3: public void Test() {
4: System.out.println("x = " + x);
5: }
6: public Test(int x) {
7: this.x = x;
8: System.out.println("x = " + x);
9: }
10:}
Sau khi thực hiện lệnh new Test(2) chương trình sẽ in ra kết quả gì?
Chọn một Câu trả lời
-1
0
2
Lỗi biên dịch
Chọn đáp án C
Vì:
+ gọi new Test(2) sẽ gọi tới hàm Test(int x) => thực hiện gán cho x giá trị là 2 và in ra 2 bởi lệnh System.out.println
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
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
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
(1) Lớp con là lớp có thể kế thừa một hoặc nhiều lớp khác nhau
(2) Lớp cha là lớp cho phép một hoặc nhiều lớp khác kế thừa từ nó.
Chọn một Câu trả lời
(1) đúng, (2) sai
(1) sai, (2) đúng
Cả 2 Câu đều đúng
Cả 2 Câu đều sai
Chọn đáp án B
Vì:
Theo khái niệm về kế thừa
Phương thức next() của lớp Scanner dùng để làm gì?
Chọn một Câu trả lời
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.
Đoạn mã nào sau đây KHÔNG có lỗi biên dịch?
Chọn một Câu trả lời
interface Eatable {}
interface Runnable {}
public interface Animal extends Eatable,Runnable{}
interface Eatable {}
interface Runnable {}
public interface Animal implements Eatable,Runnable{}
interface Eatable {}
interface Runnable {}
public interface Animal implement Eatable,Runnable{}
interface Eatable {}
interface Runnable {}
public interface Animal extends Eatable and Runnable{}
Chọn đáp án A
Vì:
Từ khóa dùng để một interface thừa kế, mở rộng một hoặc nhiều interface là extends.
Đoạn mã nào sau đây có lỗi biên dịch?
Chọn một Câu trả lời
public interface Summable {
int sum();
}
public interface Summable {
public int sum();
}
public interface Summable {
public static double PI=3.14;
public int getArea();
}
public interface Summable {
public static double PI=3.14;
public int getArea(){
return (int)0*PI;
}
}
Chọn đáp án D
Vì:
Không thể triển khai các phương thức ngay bên trong giao diện.
Để khởi tạo giá trị cho thuộc tính của lớp, không được khởi tạo ở đâu?
Chọn một Câu trả lời
Trong khối lệnh bất kỳ
Trong hàm tạo
Trong phương thức
Tại thời điểm khai báo thuộc tính
Chọn đáp án A
Vì:
Tính bao đóng của lập trình HĐT
Đâu là chú thích SAI trong java?
Chọn một Câu trả lời
int x; //a comment
/* a comment */
/**a comment*/
<!--a comment--!>
Chọn đáp án D
Vì:
Trong java có 2 cách viết chú thích
Chú thích 1 dòng: //chú thích một dòng
Chú thích nhiều dòng: /*chú thích nhiều dòng*/
Toán tử nào thực hiện phép chia lấy phần dư?
Chọn một Câu trả lời
/
//
%%
%
Chọn đáp án D
Vì:
Theo qui định về kí hiệu các phép toán trong java
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(1));
}
}
Chọn một Câu trả lời
10
11
10
10
11
11
Không in kết quả và báo lỗi
Chọn đáp án A
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(1) của đối tượng s => gọi đến phương thức getAge(int added) của lớp Man => in ra 11








