題目整理來(lái)源 —— 恒驪學(xué)堂 ,更加體系化的視頻請(qǐng)點(diǎn)擊
1、 面向?qū)ο缶幊痰娜筇匦允牵? )
A) 封裝,繼承,多態(tài)
B) 封裝,重用,繼承
C) 繼承,抽象,多態(tài)
D) 封裝,靈活,抽象
2、 下面關(guān)于構(gòu)造方法的說(shuō)法正確的是( )
A. 構(gòu)造方法不能被繼承
B. 構(gòu)造方法不能被重寫
C. 構(gòu)造方法不能被重載
D. 構(gòu)造方法不能聲明為private
3、 下面關(guān)于類的說(shuō)法,不正確的是( )
A) 類是同種對(duì)象的集合和抽象
B) 類屬于Java語(yǔ)言中的引用數(shù)據(jù)類型
C) 對(duì)象是類的實(shí)例
D) 類就是對(duì)象
4、 Java語(yǔ)言中哪個(gè)包是被自動(dòng)導(dǎo)入的()
A) java.util
B) java.lang
C) java.default
D) java.io
5、 有一個(gè)類MyClass,它的構(gòu)造方法聲明正確的是( )
A) void MyClass(int x) {...}
B) Myclass(int x){...}
C) public MyClass(int x){…}
D) public void MyClass(int x){…}
6、 在Java中,如果父類中的某些方法不包含任何邏輯,并且需要由子類重寫,應(yīng)該使用
( )關(guān)鍵字來(lái)聲明父類的這些方法
A) final
B) abstract
C) static
D) void
7、 下面關(guān)于接口說(shuō)法不正確的是( )
A) 接口的所有方法都是抽象的
B) 接口所有的方法一定都是public的
C) 用于定義接口的關(guān)鍵字是implements
D) 接口是一組行為的集合
8、 為了區(qū)分類中重載的同名不同方法,要求( )
A) 參數(shù)的類型或個(gè)數(shù)不同
B) 使用不同的參數(shù)名
C) 修改訪問(wèn)權(quán)限
D) 方法返回值數(shù)據(jù)類型不同
9、 不能用在類上的修飾符是( )
A) final
B) public
C) abstract
D) protected
10、 當(dāng)編譯并運(yùn)行下面程序時(shí)會(huì)出現(xiàn)什么結(jié)果( )
public class MyAr{
public static void main(String argv[]){
int[] i = new int[5];
System.out.println(i[5]);
}
}
A) 編譯出錯(cuò)
B) 運(yùn)行出錯(cuò)
C) 輸出0
D) 輸出“null”
11、 已定義兩個(gè)接口B和C,要定義一個(gè)類同時(shí)實(shí)現(xiàn)這兩個(gè)接口,正確的是( )
A) interface A extends B,C
B) interface A implements B,C
C) class A implements B,C
D) class A implements B,implements C
12、 下面關(guān)于繼承的敘述正確的是( )
A. 在JAVA里只允許單一繼承
B. 在JAVA里一個(gè)類只能實(shí)現(xiàn)一個(gè)接口
C. JAVA可以多繼承
D. JAVA的單一繼承避免了菱形繼承的危險(xiǎn)
13、 研究下面的JAVA代碼,輸出結(jié)果將是( )
public class Test {
String s = "nba";
public void test(String s) {
System.out.println("s:"+s);
System.out.println("this.s:"+this.s);
this.s=s;
System.out.println("s:"+s);
System.out.println("this.s:"+this.s);
}
public static void main(String[] args) {
new Test().test("cba");
}
}
A. s:cba this.s:nba s:cba this.s:nba
B. s:nba this.s:nba s:nba this.s:nba
C. s:cba this.s:nba s:cba this.s:cba
D. s:nba this.s:cba s:cba this.s:cba
14、 給定JAVA代碼如下,關(guān)于super的用法,以下描述正確的是( )
class C extends B {
public C() {
super();
}
}
A、用來(lái)調(diào)用類B中定義的super()方法
B、用來(lái)調(diào)用類C中定義的super()方法
C、用來(lái)調(diào)用類B中的無(wú)參構(gòu)造方法
D、用來(lái)調(diào)用類B中第一個(gè)出現(xiàn)的構(gòu)造方法
15. 對(duì)于任意一個(gè)類,用戶所能定義的構(gòu)造方法的個(gè)數(shù)至多為()
A. 0個(gè)
B. 1個(gè)
C. 2個(gè)
D. 任意個(gè)
16.關(guān)于實(shí)例方法和類方法,以下描述正確的是()
A. 實(shí)例方法只能訪問(wèn)實(shí)例變量
B. 類方法既可以訪問(wèn)類變量,也可以訪問(wèn)實(shí)例變量
C. 類方法只能通過(guò)類名來(lái)調(diào)用
D. 實(shí)例方法只能通過(guò)對(duì)象來(lái)調(diào)用
17.接口是Java面向?qū)ο蟮膶?shí)現(xiàn)機(jī)制之一,以下說(shuō)法正確的是:()
A. Java支持多重繼承,一個(gè)類可以實(shí)現(xiàn)多個(gè)接口;
B. Java只支持單重繼承,一個(gè)類可以實(shí)現(xiàn)多個(gè)接口;
C. Java只支持單重繼承,一個(gè)類只可以實(shí)現(xiàn)一個(gè)接口;
D. Java支持多重繼承,但一個(gè)類只可以實(shí)現(xiàn)一個(gè)接口。
18. 關(guān)于接口的定義和實(shí)現(xiàn),以下描述正確的是:()
A. 接口定義中的方法都只有定義沒(méi)有實(shí)現(xiàn)
B. 接口定義中的變量都必須寫明final和static
C. 如果一個(gè)接口由多個(gè)類來(lái)實(shí)現(xiàn),則這些類在實(shí)現(xiàn)該接口中的方法時(shí)應(yīng)采用統(tǒng)一的代碼
D. 如果一個(gè)類實(shí)現(xiàn)一個(gè)接口,則必須實(shí)現(xiàn)該接口中的所有方法,但方法未必聲明為public.
19.下列關(guān)于抽象類的說(shuō)法四個(gè)是正確的?()
A.某個(gè)抽象類的父類是抽象類,則這個(gè)子類必須重寫父類的所有抽象方法;
B.接口和抽象類是同一回事;
C.絕對(duì)不能用抽象類去創(chuàng)建對(duì)象;
D.抽象類中不可以有非抽象方法。
20、以下描述不正確的是?()
A. final class不能被繼承
B. final變量不能被修改
C. final成員變量不可以在構(gòu)造方法中賦值
D. final方法不能被覆蓋(override)
21、以下描述不正確的是()
A. abstract class一定有abstract method(s)
B. abstract class可以沒(méi)有abstract method(s)
C. 定義abstract class的目的是為了被繼承
D. interface中定義的方法全是abstract methods
E. interface中定義的變量全部是final static變量
22、下面關(guān)于java語(yǔ)言中方法的說(shuō)法錯(cuò)誤的是: ()
A.方法調(diào)用時(shí)參數(shù)類型必須符合方法的定義
B.參數(shù)傳遞是值傳遞的方式
C.如果方法沒(méi)有返回值必須聲明返回為void
D.如果方法定義為返回void,則方法中不能出現(xiàn)return語(yǔ)句
23. 在Java類中,使用以下( )聲明語(yǔ)句來(lái)定義公有的int型常量MAX。
A. public int MAX = 100;
B. final int MAX = 100;
C. public static int MAX = 100;
D. public static final int MAX = 100;
24. 在Java中,下列關(guān)于方法重載的說(shuō)法中錯(cuò)誤的是( )。
A. 方法重載要求方法名稱必須相同
B. 重載方法的參數(shù)列表必須不一致
C. 重載方法的返回類型必須一致
D. 一個(gè)方法在所屬的類中只能被重載一次
25. 給定Java代碼如下所示,在橫線處新增下列( )方法,是對(duì)cal方法的重載。
public class Test{
public void cal(int x, int y, int z) {}
_____________
}
A. public int cal(int x, int y, float z){ return 0; }
B. public int cal(int x, int y, int z){ return 0; }
C. public void cal(int x, int z){ }
D. public void cal(int z, int y, int x){ }
26. 在Java中,下面對(duì)于構(gòu)造函數(shù)的描述正確的是( )。
A. 類必須顯式定義構(gòu)造函數(shù)
B. 構(gòu)造函數(shù)的返回類型是void
C. 構(gòu)造函數(shù)和類有相同的名稱,并且不能帶任何參數(shù)
D. 一個(gè)類可以定義多個(gè)構(gòu)造函數(shù)
27. 下面Java代碼的運(yùn)行結(jié)果是( )。
class Penguin {
private String name = null; // 名字
private int health = 0; // 健康值
private String sex = null; // 性別
public void Penguin() {
health = 10;
sex = "雄";
System.out.println("執(zhí)行構(gòu)造方法。");
}
public void print() {
System.out.println("企鵝的名字是" + name + ",健康值是" + health + ",性別是" + sex
+ "。");
}
public static void main(String[] args) {
Penguin pgn = new Penguin();
pgn.print();
}
}
A. 企鵝的名字是null,健康值是10,性別是雄。
B. 執(zhí)行構(gòu)造方法。 企鵝的名字是null,健康值是0,性別是null。
C. 企鵝的名字是null,健康值是0,性別是null。
D. 執(zhí)行構(gòu)造方法。 企鵝的名字是null,健康值是10,性別是雄。
28. 下列選項(xiàng)中關(guān)于Java中封裝的說(shuō)法錯(cuò)誤的是( )。
A. 封裝就是將屬性私有化,提供公有的方法訪問(wèn)私有屬性
B. 屬性的訪問(wèn)方法包括setter方法和getter方法
C. setter方法用于賦值、getter方法用于取值
D. 類的屬性必須進(jìn)行封裝,否則無(wú)法通過(guò)編譯
29. 使用Java實(shí)現(xiàn)封裝,第一步是修改屬性可見性來(lái)限制對(duì)屬性的訪問(wèn),第二步是創(chuàng)建賦值和取值方法,用于對(duì)屬性的訪問(wèn),第三步應(yīng)該是( )。
A. 使用賦值和取值方法訪問(wèn)屬性
B. 編寫常規(guī)方法訪問(wèn)屬性
C. 在賦值和取值方法中,加入對(duì)屬性的存取限制
D. 編寫main方法創(chuàng)建對(duì)象,調(diào)用賦值和取值方法訪問(wèn)屬性
30. 在Java中,以下程序編譯運(yùn)行后的輸出結(jié)果為( )。
public class Test {
int x, y;
Test(int x, int y) {
this.x = x;
this.y = y;
}
public static void main(String[] args) {
Test pt1, pt2;
pt1 = new Test(3, 3);
pt2 = new Test(4, 4);
System.out.print(pt1.x + pt2.x);
}
}
A. 6
B. 3 4
C. 8
D. 7
31.給定一個(gè)Java程序Test.java的代碼如下所示,編譯時(shí),會(huì)出現(xiàn)以下( )情況。
class Parent {
public int count() { // 第1行
return 0;
}
}
public class Test extends Parent {
private int i;
public int count() { // 第2行
return i % 9; // 第3行
}
}
A. 編譯通過(guò)
B. 在第1行引發(fā)編譯錯(cuò)誤
C. 在第2行引發(fā)編譯錯(cuò)誤
D. 在第3行引發(fā)編譯錯(cuò)誤
32.給定如下一個(gè)Java源文件Child.java,編譯并運(yùn)行Child.java,以下結(jié)果正確的是( )。
class Parent1 {
Parent1(String s){
System.out.println(s);
}
}
class Parent2 extends Parent1{
Parent2(){
System.out.println("parent2");
}
}
public class Child extends Parent2 {
public static void main(String[] args) {
Child child = new Child();
}
}
A. 編譯錯(cuò)誤:沒(méi)有找到構(gòu)造器Child()
B. 編譯錯(cuò)誤:沒(méi)有找到構(gòu)造器Parent1()
C. 正確運(yùn)行,沒(méi)有輸出值
D. 正確運(yùn)行,輸出結(jié)果為:parent2
33. 分析如下所示的Java代碼,則選項(xiàng)中的說(shuō)法正確的是( )。
class Parent{
public String name;
public Parent(String pName){
this.name = pName;
}
}
public class Test extends Parent { //1
public Test(String Name){ //2
name="hello"; //3
super("kitty"); //4
}
}
A. 第2行錯(cuò)誤,Test類的構(gòu)造函數(shù)中參數(shù)名稱應(yīng)與其父類構(gòu)造函數(shù)中的參數(shù)名相同
B. 第3行錯(cuò)誤,應(yīng)使用super關(guān)鍵字調(diào)用父類的name屬性,改為super.name="hello";
C. 第4行錯(cuò)誤,調(diào)用父類構(gòu)造方法的語(yǔ)句必須放在子類構(gòu)造方法中的第一行
D. 程序編譯通過(guò),無(wú)錯(cuò)誤
34. 下面關(guān)于Java接口的說(shuō)法錯(cuò)誤的是( )。
A. 一個(gè)Java接口是一些方法特征的集合,但沒(méi)有方法的實(shí)現(xiàn)
B. Java接口中定義的方法在不同的地方被實(shí)現(xiàn),可以具有完全不同的行為
C. Java接口中可以聲明私有成員
D. Java接口不能被實(shí)例化
35. 在Java接口中定義常量,下面語(yǔ)法錯(cuò)誤的是( )。
A. static int MALE = 1;
B. final int MALE = 1;
C. int MALE = 1;
D. private int MALE = 1;
36. 關(guān)于下列代碼說(shuō)法正確的是:()。
public class Foo {
public int add(int a, int b) {
return a + b;
}
public static void main(String[] args) {
Foo foo = null;
System.out.println(foo.add(10, 20));
}
}
A.編譯錯(cuò)誤
B.正常運(yùn)行,但無(wú)結(jié)果輸出
C.運(yùn)行輸出:30
D.運(yùn)行時(shí)拋出NullPointerException異常
37、請(qǐng)看下列代碼
class ClassA {}
class ClassB extends ClassA {}
class ClassC extends ClassA {}
public class Test{
public static void main(String[] args) {
ClassA p0 = new ClassA();
ClassB p1 = new ClassB();
ClassC p2 = new ClassC();
ClassA p3 = new ClassB();
ClassA p4 = new ClassC();
<插入代碼>
}
}
下列選項(xiàng)中放置在<插入代碼>處,使程序編譯正確的是: ()
A.p0 = p1;
B.p1 =p2;
C.p2 = p4;
D.p2 = (ClassC)p1;
38、程序輸出的結(jié)果是 ()。
class One {
public One() {
System.out.print(1);
}
}
class Two extends One {
public Two() {
System.out.print(2);
}
}
class Three extends Two {
public Three() {
System.out.print(3);
}
}
public class Numbers {
public static void main(String[] argv) {
new Three();
}
}
A.1
B.3
C.123
D.321
39、下面代碼運(yùn)行結(jié)果是: ()
public class Animal {
public String noise() {
return "peep";
}
public static void main(String[] args) {
Animal animal = new Dog();
Cat cat = (Cat)animal;
System.out.println(cat.noise());
}
}
class Dog extends Animal {
public String noise() {
return "bark";
}
}
class Cat extends Animal {
public String noise() {
return "meow";
}
}
A.peep
B.bark
C.meow
D.拋出運(yùn)行時(shí)異常
40、下面代碼運(yùn)行結(jié)果是: ()
class SimpleCalc {
public int value;
public void calculate() {
value += 7;
}
}
public class MultiCalc extends SimpleCalc {
public void calculate() {
value -= 3;
}
public void calculate(int multiplier) {
calculate();
super.calculate();
value *= multiplier;
}
public static void main(String[] args) {
MultiCalc calculator = new MultiCalc();
calculator.calculate(2);
System.out.println("Value is: " + calculator.value);
}
}
A.Value is: 8
B.Value is: -8
C.Value is: 12
D.Value is: -12
**41、請(qǐng)看下列代碼: **
public abstract class A {
abstract void a1();
void a2() { }
}
class B extends A {
void a1() { }
void a2() { }
}
class C extends B {
void c1() { }
}
和
A x = new B();
C y = new C();
A z = new C();
下列選項(xiàng)中屬于多態(tài)形式調(diào)用方法的是: ()
A.x.a2();
B.z.a2();
C.z.c1();
D.y.c1()
42、程序執(zhí)行的結(jié)果是:()
package com.rl;
class Foo {
public int a;
public Foo() {
a = 3;
}
public void addFive() {
a += 5;
}
}
class Bar extends Foo {
public int a;
public Bar() {
a = 8;
}
public void addFive() {
this.a += 5;
}
}
public class TestFoo {
public static void main(String[] args) {
Foo foo = new Bar();
foo.addFive();
System.out.println("Value: " + foo.a);
}
}
A.Value: 3
B.Value: 8
C.Value: 13
D.Value: 18
43、程序運(yùn)行結(jié)果 ()
public class Test {
public static void main(String[] args) {
Child c = new Child();
}
}
class Father {
public Father() {
System.out.println("父類無(wú)參構(gòu)造函數(shù)");
}
public Father(String name) {
System.out.println("父類有參構(gòu)造函數(shù)");
}
}
class Child extends Father {
public Child() {
this("dd");
System.out.println("子類無(wú)參構(gòu)造函數(shù)");
}
public Child(String name) {
super("dd");
System.out.println("子類有參構(gòu)造函數(shù)");
}
}
A.父類有參構(gòu)造函數(shù) 子類有參構(gòu)造函數(shù) 子類無(wú)參構(gòu)造函數(shù)
B.父類無(wú)參構(gòu)造函數(shù) 子類有參構(gòu)造函數(shù) 子類無(wú)參構(gòu)造函數(shù)
C.子類有參構(gòu)造函數(shù) 子類無(wú)參構(gòu)造函數(shù) 父類無(wú)參構(gòu)造函數(shù)
D.子類無(wú)參構(gòu)造函數(shù) 子類有參構(gòu)造函數(shù) 父類無(wú)參構(gòu)造函數(shù)
44.下列代碼的運(yùn)行結(jié)果是: ()
public class Animal {
public String noise() {
return "peep";
}
public static void main(String[] args) {
Cat cat = null;
Animal animal = new Dog();
if (animal instanceof Cat) {
cat = (Cat) animal;
System.out.println(cat.noise());
} else {
System.out.println("animal is not Cat's instance");
}
}
}
class Dog extends Animal {
public String noise() {
return "bark";
}
}
class Cat extends Animal {
public String noise() {
return "meow";
}
}
A.peep
B.bark
C.meow
D.animal is not Cat's instance
45. 下列關(guān)于修飾符混用的說(shuō)法,錯(cuò)誤的是()
A. abstract不能與final并列修飾同一個(gè)類
B. abstract類中不可以有private的成員
C. abstract方法必須在abstract類中
D. static方法中能處理非static的屬性