Java基础测试题 初学

Java基础测试题

java初学-学习贴

单选题

1.现有以下代码:

interface W {
}
class Z implements W {
}
class X extends Z {
}
class Y extends Z {
}
下列哪些代码段是正确的?
A、
	X x = new X();
   Y y = new Y();
   Z z = new Z();
   y = Y(x);
B、
	X x = new X();
   Y y = new Y();
   Z z = new Z();
   x = X(y);
C、
	X x = new X();
   Y y = new Y();
   Z z = new Z();
   Z = Z(x);
D、
	X x = new X();
   Y y = new Y();
   Z z = new Z();
   W w= W(x);

参考答案:D

2.给出下面代码,请问该程序的运行结果是什么?

interface A{

 int x=0;
 
 A(){

  x=5;

 }

 A(int s){

  x=s;

 }
 A、编译不通过,因为接口中的构造器必须用public修饰
 B、编译不通过,因为接口中不能超过一个以上的构造器
 C、编译不通过,因为接口中不能存在构造器
 D、编译不通过,因为接口名必须超过一个字符

参考答案:C

3.以下哪个约束符可用于定义成员常量

A、static
B、final
C、abstract
D、const

参考答案:B

4.以下关于abstract的说法,正确的是

A、abstract只能修饰类
B、abstract只能修饰方法
C、abstract类中必须有abstract方法
D、abstract方法所在的类必须用abstract修饰

参考答案:D

5.给出下面的代码段:

class Base {

}

class Sub extends Base {

 public String getFields() {

  String name = "Sub";

  return name;

 }

}
class DoSub {

 public static void main(String[] args) {

  Base b = new Sub();

  // 插入语句处

 }

}
在插入语句处插入那条代码能够输出Sub?
A、System.out.println(b.getFields());
B、System.out.println(b.name);
C、System.out.println((Base)b.getFields());
D、System.out.println(((Sub)h)b.getFields());

参考答案:D
解析:b属于Base方法,无法直接调用Base子类Sub中的方法。

6.现在如下代码:

class Super {

 public float getNum() {

  return 3.0f;

 }

}

class Sub extends Super {

 // 空白处

}
请问以下哪个语句放置在注释的空白处会引起编译错误?
A、public float getNum(){return4.0f;}
B、public void getNum(){}
C、public void getNum(double d){}
D、public double getNum(float d){return4.0;}

参考答案:B

7.以下关于方法覆盖描述错误的是

A、覆盖的方法和被覆盖的方法必须具有完全相同的方法名、参教列表和返回类型
B、覆盖的方法的访问范围不能比被覆盖的方法访问范围小
C、覆盖的方法不能抛出被覆盖方法不能抛出的异常
D、被覆盖的方法不能被缺省修饰符修饰

参考答案:A

9.已知如下代码:

1: class Example{
2: String str;
3: public Example(){
4: str= "example";
5: }
6: public Example(String s){
7: str=s;
8: }
9:} }
10: class Demo extends Example{
11: }
12: public class Test{
13:public void f () {
14:Example ex = new Example("Good");
15:Demo d = new Demo("Good");
16:} }
哪句语句会导致错误?
A、line 6
B、line 10
C、line 14
D、line 15

参考答案:D

9.以下代码的执行结果是

public class Example {
 String s = "Outer";
 public static void main(String[] args) {
  S2 s2 = new S2();
  s2.display();
 }
}

class S1 {
 String s = "S1";
 void display() {
  System.out.println(s);
 }
}

class S2 extends S1 {
 String s = "S2";
}


A、S1
B、S2
C、null
D、Ourer

参考答案:A

10.构造方法何时被调用

A、类定义时
B、使用对象的变量时
C、调用对象方法时
D、创建对象时

参考答案:D

11.下列给出的代码段运行结果是

public class Example {
 int maxElements;

 void Example() {
  maxElements = 100;
  System.out.println(maxElements);
 }

 public Example(int i) {
  maxElements = i;
  System.out.println(maxElements);
 }
 public static void main(String[] args) {
  Example a=new Example();
  Example b=new Example(999);
 }
}

A、打印输出100 999	
B、打印输出999 100
C、代码编译失败
D、代码编译成功但运行不正常

参考答案:C

12.关于构造方法说法错误的是

A、构造方法由Java虚拟机在构建对象时自动调用
B、只有构造方法才能拥有和类名相同的方法名
C、一个类可以拥有多个重载的构造方法
D、在构造方法中利用this调用其他版本的构造方法时,this调用必须放在构造方法的第一句

参考答案:B

13.在某个类中定义一个方法:void getSort(int x),以下关于能否作为这个方法的重载错误的是

A、void getSort(float x){x*=x;}
B、int getSort(double y){return(int)(2*y);}
C、double getSort(int x,int y){return x+y;}
D、都不能

参考答案:D

14.为了区分重载中同名的不同方法,要求:

A、参数名不同
B、返回类型不同
C、采用不同的形式参数列表
D、选项 A B C都对

参考答案:C
解析:方法重载即指同一个类中多个方法可以享有相同的名字。但是这些方法的参数类型列表必须不同,或者是参数个数不同,或者是参数类型不同,或者是参数类型的排列顺序不同。

15.设已声明了一个类A的两个对象al、a2,为了初始化a1和a2,下面语句正确的是

A、	a1 = new();
	a2 = new();
B、	a1 = A new();
	a2 = A new();
C、	a1,a2 = new A();
D、	a1 = new A();
	a2 = new A();

参考答案:D

16.指出下列程序运行的结果

public class Example{ 
String str=new String("good"); 
char[]ch={'a','b','c'}; 
public static void main(String args[]){ 
Example ex=new Example(); 
ex.change(ex.str,ex.ch); 
  System.out.print(ex.str+" and "); 
for(int i=0;i<ex.ch.length;i++){
 System.out.print(ex.ch[i]);
} 
} 

public void change(String str,char ch[]){ 
str="test ok"; 
ch[0]='g'; 
} 
}
A、good and abc
B、good and gbc
C、test ok and abc
D、test ok and gbc

参考答案:B

17.以下说法正确的是

A、不需要定义类,就能创建对象
B、对象一经声明就可以立即使用
C、Java中的方法参数如果是对象,那么形参的变化会原样反映到实参上
D、new操作符动态地为对象按照其指定的类型分配内存,并返回该类型的一个引用

参考答案:D

18.面向对象程序设计技术的特点是

A、可重用性
B、可维护性
C、表示方法的一致性
D、可重用性、可维护性、表示方法的一致性

参考答案:D

19.下面关于类的说法不正确的是

A、类是Java语言中的一种复合数据类型
B、类中不包含数据变量和方法
C、类是对所有具有一定共性的对象的抽象
D、Java语言的代码必须编写在类中

参考答案:B

多选题

1.现有以下代码:

interface W {
}
class Z implements W {
}
class X extends Z {
}
class Y extends Z {
}
下列哪些代码段是正确的?
A、
	X x = new X();
   Y y = new Y();
   Z z = new Z();
   y = Y(x);
B、
	X x = new X();
   Y y = new Y();
   Z z = new Z();
   x = X(y);
C、
	X x = new X();
   Y y = new Y();
   Z z = new Z();
   Z = Z(x);
D、
	X x = new X();
   Y y = new Y();
   Z z = new Z();
   W w= W(x);

参考答案:C,D

2.请选择所有的正确答案

A、在接口中定义的方法默认为private方法
B、在接口中定义的变量默认为public、static、final的
C、一个接口可以继承多个接口
D、关键字implements代表接口之间的继承关系

参考答案:B,C

public class Base{
int w, x, y ,z;
public Base(int a,int b)
{
x=a; y=b;
}
public Base(int a, int b, int c, int d)
{
// assignment x=a, y=b
w=d;
z=c;
}
}

在代码说明// assignment x=a, y=b处写入如下哪几个代码是正确的?
A、Bash(a,b);
B、x=a,y=b;
C、x=a;y=b;
D、this(a,b);

参考答案:C,D

判断题
  1. Java8后接口的默认方法可以有多个
A、是
B、否

参考答案 :A

  1. abstract的method是否可同时是static
A、是
B、否

参考答案 :B

未完。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值