Java面试通关宝典—Java基础02错题集

5 篇文章 0 订阅
4 篇文章 1 订阅

1、(单选题)为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为()

A.static void method( )

B.public void method( )

C.final void method( )

D.abstract void method( )

【正确答案】A

【答案解析】public修饰的方法可被其他类访问或引用。abstract修饰的是抽象方法,抽象方法没有方法体,必须先实现此抽象方法才能使用;final修饰的方法不能被继承;static修饰的为静态方法,静态方法不需要类的实例化就可以被类直接调用。

1、(单选题)关于实例方法和类方法,以下描述正确的是( )

A.实例方法只能访问实例变量

B.类方法既可以访问类变量,也可以访问实例变量

C.类方法只能通过类名来调用

D.实例方法只能通过对象来调用

【正确答案】D

【答案解析】实例方法可以访问类变量;类方法只能访问类变量;类方法可以通过对象来调用。

2、(单选题)下列关于修饰符混用的说法,错误的是( )

A.abstract 不能与 final 并列修饰同一个类

B.abstract 类中可以有 private 的成员

C.abstract 方法可以放在 abstract 类或接口中

D.static 方法中能直接使用非 static 的属性

【正确答案】D

【答案解析】静态方法中不能调用外部的非静态成员

3、(单选题)根据以下代码下面选项正确的是():

1. package foo;

2. import java.util.Vector;

3. private class MyVector extends Vector {

4. int i = 1;

5. public MyVector() {

6. i = 2;

7. }

8. }

9. public class MyNewVector extends MyVector {

10. public MyNewVector () {

11. i = 4;

12. }

13. public static void main (String args []) {

14. MyVector v = new MyNewVector();

15. }

16. }

A.代码无编译错误

B.第3行出现编译错误

C.第6行出现编译错误

D.第9行出现编译错误

【正确答案】B

【答案解析】类MyVector不能是私有的

4、在java中,程序为对象动态分配内存,内存分配的运算符是new

5、(单选题)在下面程序的第 7 行补充上下列哪个方法,会导致在编译过程中发生 错误( )

1) class Super{

2) public float getNum(){

3) return 3.0f;

4) }

5) }

6) public class Sub extends Super{

7) // TODO ...

8) }

A.public float getNum(){retun 4.0f;}

B.public void getNum(){}

C.public void getNum(double d){}

D.public double getNum(float d){retun 4.0f;}

【正确答案】B

【答案解析】重写要求方法签名必须相同,返回类型如果是基本类型或无返回值时必须一致。重载要求方法名相同且参数列表必须不同,与返回值类型无关。

6、(单选题)栈是一种( )

A.存取受限的线性结构

B.存取不受限的线性结构

C.存取受限的非线性结构

D.存取不受限的非线性结构

【正确答案】A

【答案解析】栈在计算机科学中定义是仅在表尾进行插入或删除的线性表。

7、(多选题)下面选项中哪两个可以在 A 的子类中使用( ) class A { protected int method1 (int a, int b) { return 0; } }

A.public int method1(int a, int b) { return 0; }

B.private int method1(int a, int b) { return 0; }

C.private int method1(int a, long b) { return 0; }

D.public short method1(int a, int b) { return 0; }

【正确答案】A,C

【答案解析】A是重写,B是重写,子类重写父类中方法权限不能比父类低。C是重载,D是重写,重写时返回类型如果是基本类型或无返回值必须一致。

8、(多选题)以下哪个选项可以替换第2行位置的代码,且替换后效果相同() 1. public interface Foo{ 2. int k = 4; 3. }

A.final int k = 4;

B.public int k = 4;

C.static int k = 4;

D.abstract int k = 4;

【正确答案】A,B,C

【答案解析】接口中的属性都是常量,默认由public static final修饰,可以省略,abstract不能修饰变量。

9、(多选题)不能用来修饰 interface 的有( )

A.private

B.public

C.protected

D.static

【正确答案】A,C,D

【答案解析】修饰接口可以是public或默认。

10、(多选题)在JAVA 8.0版本之前,接口中可以定义( )。

A.静态方法

B.常量

C.构造方法

D.抽象方法

【正确答案】B,D

【答案解析】接口中只能定义常量和抽象方法

11、(多选题)面向对象的主要特征有哪些()

A.封装

B.多态

C.继承

D.抽象

【正确答案】A,B,C

【答案解析】面向对象的三大特征:封装,多态和继承。

12、(单选题)从下面四段(A,B,C,D)代码中选择出正确的代码段( )

A.abstract class Name {

private String name;

public abstract boolean isStupidName(String name) {} }

B.public class Something { void doSomething () { private String s = ""; int l = s.length(); } }

C.public class Something {

public static void main(String[] args) {

Other o = new Other(); new Something().addOne(o); }

public void addOne(final Other o) { o.i++; } }

class Other { public int i; }

D.public class Something { public int addOne(final int x) { return ++x; } }

【正确答案】C

【答案解析】A抽象方法中不能定义方法体;B方法中定义的是局部变量,不能用类成员变量修饰符private;D常量不能被修改

13、(单选题)已知如下代码,下列选项中哪个表达式会编译出错( )

interface IFace{}

class CFace implements IFace{}

class Base{} public

class ObRef extends Base{

public static void main(String argv[]){

ObRef ob = new ObRef(); Base b = new Base(); Object o1 = new Object(); IFace o2 = new CFace(); } }

A.o1=o2;

B.b=ob;

C.ob=b;

D.o1=b;

【正确答案】C

【答案解析】b是ob的父类,将父类的引用赋值到子类引用变量上面要加强制类型转换。

14、(单选题)在JAVA中,已定义两个接口B和C,要定义一个实现这两个接口的类,以下语句正确的是( )。

A.interface A extend B,C

B.interface A implements B,C

C.class A implements B,C

D.class A implements B, implements C

【正确答案】C

【答案解析】因为是类实现,所以用class,implements只需要写一次。

15、(单选题)关于以下程序代码的说明正确的是( ) 1.class HasStatic{ 2. private static int x=100; 3. public static void main(String args[ ]){ 4. HasStatic hs1=new HasStatic(); 5. hs1.x++; 6. HasStatic hs2=new HasStatic(); 7. hs2.x++; 8. hs1=new HasStatic(); 9. hs1.x++; 10. HasStatic.x--; 11. System.out.println("x="+x); 12. } 13.}

A.5 行不能通过编译,因为引用了私有静态变量

B.10 行不能通过编译,因为 x 是私有静态变量

C.程序通过编译,输出结果为:x=103

D.程序通过编译,输出结果为:x=102

【正确答案】D

【答案解析】静态变量是所有对象共享,上面几个对象操作的是同一个静态变量,静态变量可以直接用类名调用。

16、当子类隐藏了父类的变量,并重写父类的方法时,又要使用父类的变量或父类重写的方法时,可通过super来实现对父类变量或父类方法的调用。super用来引用当前对象的父类。

10、(单选题)以下程序的运行结果是() 1. public static void main(String[] args) { 2. Object obj = new Object() { 3. public int hashCode() { 4. return 42; 5. } 6. }; 7. System.out.println(obj.hashCode()); 8. }

A.42

B.运行时出错

C.第2行位置编译出错

D.第7行位置编译出错

【正确答案】A

【答案解析】匿名内部类中已覆盖了hashcode方法。

16、(多选题)下列说法错误的有( )

A.在类方法中可用 this 来调用本类的类方法

B.在类方法中调用本类的类方法时可直接调用

C.在类方法中只能调用本类中的类方法

D.在类方法中绝对不能调用实例方法

【正确答案】A,C,D

【答案解析】A在类方法中不能使用this关键字;C在类方法中可调用其他类中的类方法,D在类方法中可以通过实例化对象来调用来调用实例方法

17、(多选题)下面关于变量及其范围的陈述哪些是不正确的( )

A.类中的普通属性是类的实例变量

B.实例变量用关键字static声明

C.局部变量在局部范围外也可以被使用

D.局部变量在使用前必须被初始化

【正确答案】B,C

【答案解析】Bstatic修饰的是类变量或静态变量,D局部变量只能在局部范围内被使用。

18、修饰接口可以是public或默认。

19、(多选题)已知下列选项中的方法是在某个类中定义的,现在子类中不可以定义与下列选项中方法签名相同的方法的选项是( )

A.final void methoda() {}

B.void methoda() {}

C.static void methoda() {}

D.static final void methoda() {}

【正确答案】A,D

【答案解析】final修饰方法在子类中不能被重写。

20、(单选题)以下程序正确的输出是( ) package test.father; public class FatherClass { public FatherClass() { System.out.println("FatherClass Create"); } } package test.child; import test.father.FatherClass; public class ChildClass extends FatherClass { public ChildClass() { System.out.println("ChildClass Create"); } public static void main(String[] args) { FatherClass fc = new FatherClass(); ChildClass cc = new ChildClass(); } }

A.FatherClass Create FatherClass Create ChildClass Create

B.FatherClass Create ChildClass Create FatherClass Create

C.ChildClass Create ChildClass Create FatherClass Create

D.ChildClass Create FatherClass Create

【正确答案】A

【答案解析】子类的构造方法开始默认有一句super()来调用父类的构造方法。

21、(单选题)下列关于修饰符混用的说法,错误的是( )

A.abstract 不能与 final 并列修饰同一个类

B.abstract 类中可以有 private 的成员

C.abstract 方法可以放在 abstract 类或接口中

D.static 方法中能直接使用非 static 的属性

【正确答案】D

【答案解析】static方法不能引用其外部的非静态属性

22、(单选题)关于以下说法正确的是( ) 1.class StaticStuff 2.{ 3. static int x=10; 4. static {x+=5;} 5. public static void main(String args[]) 6. { 7. System.out.println("x=" + x); 8. } 9. static {x/=3;} 10.}

A.4 行与 9 行不能通过编译,因为缺少方法名和返回类型

B.9 行不能通过编译,因为只能有一个静态初始化器

C.编译通过,执行结果为:x=5

D.编译通过,执行结果为:x=3

【正确答案】C

【答案解析】静态初始化块是在类加载时会执行到的,按照在类中出现的先后顺序执行。

23、(单选题)下述代码的执行结果是( ) class Super { public int getLength() { return 4; } } public class Sub extends Super { public long getLength() { return 5; } public static void main (String[] args) { Super sooper = new Super (); Super sub = new Sub(); System.out.println(sooper.getLength() + "," + sub.getLength()); } }

A.4,4

B.4,5

C.5,4

D.代码不能被编译

【正确答案】D

【答案解析】方法重写如果返回值是基本类型或void类型应与父类的一致。

24、(单选题)下列哪一种叙述是正确的( )

A.abstract 修饰符可修饰字段、方法和类

B.抽象方法的 body 部分必须用一对大括号{ }包住

C.声明抽象方法,大括号可有可无

D.声明抽象方法不可写出大括号

【正确答案】D

【答案解析】A abstract可以修饰方法和类,不能修饰属性;D抽象方法没有方法体,即没有{}

25、(多选题) 下列变量命名哪个是合法的()

A.class

B.$abc

C.1234

D._name

【正确答案】B,D

【答案解析】变量命名不能全是数字.static修饰的是静态变量或类变量

26、java是从C++语言改进重新设计。

27、(单选题)执行完以下代码 int [ ] x = new int[25]; 后, 以下哪项说明是正确的( )

A.x[24]为 0

B.x[24]未定义

C.x[25]为 0

D.x[0]为空

【正确答案】A

【答案解析】int[]属于引用类型,该引用类型的每一个成员属于int类型,默认值为0.

28、(单选题)在创建对象时,必须( )

A.先声明对象,然后才能使用对象

B.先声明对象,为对象分配内存空间,然后才能使用对象

C.先声明对象,为对象分配内存空间,对对象初始化,然后才能使用对象

D.上述说法都对

【正确答案】C

【答案解析】对象是先声明,声明后会给对象分配内存空间,之后初始化,再进行使用

29、(单选题)已知类 Teacher 和 Student 都是类 Person 的子类,则对于下列代码说法正确的是( ) Person t = new Teacher(); if (t instanceof Teacher){ Student s = (Student)t; }

A.将构造一个 Student 对象

B.将构造一个 Teacher 对象

C.编译出错,且运行时出错

D.编译正确,且运行时出错

【正确答案】D

【答案解析】instanceof是一个二元运算符,它的作用是测试左边的对象是否是它右边类的实例,返回Boolean类型的数据,teacher与student之间没有继承关系,不能做强制类型转换。

30、(单选题)下列有关实参和形参说法正确的是()

A.形参是指在定义方法时参数列表中的参数 实参是指在调用方法时所传入的实际数据

B.形参变量的作用域是在整个类中都可以使用

C.实参只能是字面量值不可以是变量

D.形参不可以用 final 修饰

【正确答案】A

【答案解析】形参始指定义方法时参数列表中的参数,实参是调用方法时所传入的实际数据。形参是局部变量,只能在方法体中使用,出了方法体不可见,实参可以是字面量值也可以是变量,只要在方法调用时可以传入的数据就是实参,形参可以用final修饰,被final修饰后的形参被赋初值后不可以被改变。

31、(单选题)已知表达式 int m [ ] = {0, 1, 2, 3, 4, 5, 6}; 下面哪个表达式的值与数组下标量总数相等( )

A.m.length()

B.m.length

C.m.length()+1

D.m.length+1

【正确答案】B

【答案解析】m.length,没有括号。

32、(单选题)接口是 Java 面向对象的实现机制之一,以下说法正确的是( )

A.Java 支持多重继承,一个类可以实现多个接口

B.Java 只支持单重继承,但一个类可以实现多个接口

C.Java 只支持单重继承,一个类只可以实现一个接口

D.Java 支持多重继承,但一个类只可以实现一个接口

【正确答案】B

【答案解析】java支持单继承,一个类只能继承自另一个类,但一个类可以实现多个接口。

33、(单选题)以下代码的执行结果是() public class Test { private static float[] f = new float[2]; public static void main(String args[]) { System.out.println("f[0] = " + f[0]); } }

A.f[0] = 0

B.f[0] = 0.0

C.代码不能通过编译

D.程序运行时出错

【正确答案】B

【答案解析】float[]型的数组元素都是float,默认初始值是0.0

34、(单选题)关于实例方法和类方法,以下描述正确的是( )

A.实例方法只能访问实例变量

B.类方法既可以访问类变量,也可以访问实例变量

C.类方法只能通过类名来调用

D.实例方法只能通过对象来调用

【正确答案】D

【答案解析】实例方法可以访问类变量,类方法只能访问类变量,类方法可以通过对象调用

35、(单选题)Java编程语言之父是()

A.James Gosling

B.Abigail

C.Brutus

D.以上选项都不对

【正确答案】A

【答案解析】詹姆斯.高斯林,出生于加拿大,被称为java之父

36、(单选题)在控制台运行一个 Java 程序 TestDemo . class ,使用的命令正确的是( )

A.java TestDemo. class

B.javac TestDemo. class

C.java TestDemo

D.javac TestDemo

【正确答案】C

【答案解析】java命令程序执行字节码文件不能跟文件名后缀。

37、(单选题)选择下面代码的运行结果:( ) public class Test{ public void method(){ for(int i = 0; i < 3; i++){ System.out.print(i); } System.out.print(i); } }

A.0122

B.0123

C.编译错误

D.没有任何输出

【正确答案】C

【答案解析】i变量的作用范围在for循环中。

38、(单选题)下列数组的初始化正确的是()

A.int[ ] score = new int[ ];

B.int score[ ] = new int[ ] { 34, 90, 87, 54, 24 };

C.int[ ] score = new int[ 4 ] { 90, 12, 34, 77 };

D.int score = { 78, 23, 44, 78 };

【正确答案】B

【答案解析】A需要指定数组的长度,C在数组声明的同时赋值时不能指定数组长度,D语法错误,应为int[] score ={78,23,44,78}

39、(单选题)编译运行以下程序后,关于输出结果的说明正确的是( ) publicclass Conditional{ publicstaticvoid main(String args[]){ int x=4; System.out.println("value is "+ ((x>4) ? 99.9 : 9)); } }

A.输出结果为:value is 99.99

B.输出结果为:value is 9

C.输出结果为:value is 9.0

D.编译错误

【正确答案】C

【答案解析】三目运算符第二个表达式和第三个表达式如果都为基本类型,整个表达式的运算结果由容量高的决定,所以运算结果是double类型的。

40、(多选题)下列选项中创建数组能够编译通过的是( )

A.int[] ia = new int [15];

B.float fa = new float [20];

C.char[] ca = "Some String";

D.Object oa = new float[20];

【正确答案】A,D

【答案解析】任何类的父类都是Object,数组属于引用类型,这种写法相当于把父类的引用指向子类的实例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值