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
判断题
- Java8后接口的默认方法可以有多个
A、是
B、否
参考答案 :A
- abstract的method是否可同时是static
A、是
B、否
参考答案 :B
未完。。。