java常见的基础面试题(含答案解析)

(单选题)1、对于如下代码段可以放入到横线位置,使程序正确编译运行,而且不产生错误的选项是()

class A{

public A foo(){return this;}

}

class B extends A{

public A foo(){

return this;

}

}

class C extends B

{

_______

}

A public void foo(){}

B public int foo(){return 1;}

C public A foo(B b){return b;}

D public A foo(){return A;}

正确答案是:C

复习一下子类方法重写父类方法遵循“两同两小一大”的规则

子类覆盖父类要遵循“两同两小一大”

“两同”即方法名相同,形参列表相同

“两小”指的是子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等。

(注:看到有网友有这样的疑问,父类方法返回值是double,子类修改成int为什么不行呢?

这是因为返回值类型更大或者更小,是对于同一类型而言的。也就是说,返回值的类型需要有继承关系才去考虑大小这个概念。类型不同,肯定不是方法重写)

“一大”指的是子类方法的访问权限应比父类方法的访问权限更大或相等。

注意:覆盖方法和被覆盖方法要么都是类方法,要么都是实例方法,不能一个是类方法一个是实例方法,否则编译出错。

所以,根据这个原理,再来分析上面这道题。

A.public void foo(){}

返回值类型与父类不一致,所以不可能是方法的重写。又因为方法名相同,那么只能是方法重载,而方法重载有需要满足三个条件:形参个数、顺序、类型必须有一者不同,A选项都不满足,错

B.public int foo(){return 1;}

与A选项一样

C.public A foo(B b){return b;}

返回值类型与父类相同,但由于参数列表不同,所以是对父类方法的重载

D.public A foo(){return A;}
语法错误

(单选题)2、要表示10个学生的成绩,下列声明并初始化数组正确的是()

A int[] score=new int[ ]

B int score[10]

C int score[]=new int[9]

D int score[]=new int[10]

正确答案是:D

解析:

以下两种写法都可以:

int score[] = new int[10];
int[] score = new int[10];

注意了:取数组第10个的值是 socre[9] 因为数组的下标是从0开始

(单选题)3、关于下面代码int[] x=new int[25];描述正确的是()

A x[25]存放了数据“”。

B x[24] 存放了数据“”。

C 若访问x[25],程序将抛出异常。

D x[1]访问此数组的第一个元素。

正确答案是:C

解析:

A:不存在x[25] 索引从0开始到length-1

B:x[24] 存的是默认值0(java中没有''这一说)

C:超出内存正确

D:第二元素

(单选题) 4、已知声明并初始化二维数组 int a[ ][ ]={{1,2},{3,4},{5,6}} ,则 a[1][1] 的值为()

A 1

B 2

C 4

D 5

正确答案是 :C

解析:

二维数组: 0 1

0 {1,2}

1 {3,4}

2 {5,6} 所以a[1][1]=4;

(单选题)5、面向对象程序设计语言的三个基本特征是?( )

A 封装、接口和多态

B 继承、接口和动态

C 跨平台、接口和动态

D 封装、继承和多态

正确答案是:D

解析:

封装:访问权限 继承:子父类之间属性方法的访问 多态:同一个方法名的不同功能


(单选题)1、对于以下代码段,4个输出语句中输出true的个数是( )。

class A{}

class B extends A{}

class C extends A{}

class D extends B{}

A obj = new D();

System.out.println(obj instanceof B);

System.out.println(obj instanceof C);

System.out.println(obj instanceof D);

System.out.println(obj instanceof A);

A 1

B 2

C 3

D 4

正确答案是:C

解析:

C直接继承自A,obj的实际类型为D,和C没有关系。所以obj instanceof C 输出false。

(单选题)2、代码System. out. println(10 % 3 * 2);将打印出?

A 1

B 2

C 4

D 6

正确答案是:B

解析:%和*优先级相同,顺序执行,10%3=1 1*2=2

(不定项选择题) 3、对于构造方法,下列叙述正确的是()。

A 构造方法的优先级一般比代码块低。

B 构造方法的返回类型只能是void型。

C 构造方法的主要作用是完成对类的对象的初始化工作。

D 一般在创建新对象时,系统会自动调用构造方法。

正确答案是:ACD

解析:

A:静态成员变量或静态代码块>main方法>非静态成员变量或非静态代码块>构造方法

B:think in java中提到构造器本身并没有任何返回值。所以不能用void

C:构造方法的主要作用是完成对类的对象的初始化工作。

D:一般在创建(new)新对象时,系统会自动调用构造方法。

(单选题)4、 java中用()字指明继承关系.用()关键字指明对接口的实现。

A implements extends

B extends implements

C extend implement

D implement extend

正确答案是:B

解析:extends表继承父类

implements表是实现接口

(单选题)5、如果希望某个变量只可以被类本身访问和调用,则应该使用下列哪一种访问控制修饰?

A public

B private

C private protected

D protected

正确答案是:B

解析:private修饰的仅自己能访问,protected同包或子类可以访问,public是不同包也可以访问。

学习Java的同学注意了!!!
学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群346942462,我们一起学Java!

你可能感兴趣的:(java常见的基础面试题(含答案解析))