2019年11月9日 java1

考点1

可以把任何一种数据类型的变量赋给Object类型的变量。

  • A 对
  • B 错

正确答案: A

解析

  • 引用类型的对象都可以赋值给Object变量;
  • 而八大基础数据类型会先自动装箱成包装类型,然后再赋值给Object,所以编译运行都不会报错。

考点2

以下不是修饰符final的作用的是( )。

  • A 修饰常量
  • B 修饰不可被继承的类
  • C 修饰不可变类
  • D 修饰不可覆盖的方法

正确答案: C

解析

final的作用

  1. final修饰的变量是常量,
    • 如果修饰的是引用变量则变量中的引用地址不可变,但是地址中的内容可以变。
    • 如果修饰的是基本类型变量,则基本类型变量的值不可改变。
  2. final修饰的方法不可被重写,但是还是可以重载
  3. final修饰的类不可继承

考点3

对于abstract声明的类,下面说法正确的是

  • A 可以实例化
  • B 不可以被继承
  • C 子类为abstract
  • D 只能被继承
  • E 可以被抽象类继承

正确答案: E

解析

A,抽象类不能实例化,因为有抽象方法未实现
B,可以被继承。派生类可以实现抽象方法
C,子类可以是抽象的,也可以非抽象的
D,只能被继承说法太肯定,不正确
E,可以被抽象类继承,也可以被非抽象类继承

考点5

下列程序test 类中的变量c 的最后结果为

1
2
3
4
5
6
7
8
9
10
11
public class Test {
public static void main(String args[]) {
int a = 10;
int b;
int c;
if (a > 50) {
b = 9;
}
c = b + a;
}
}
  • A 10
  • B 0
  • C 19
  • D 编译出错

正确答案: D

解析

局部变量不会自动进行初始化,所以当使用局部变量时,而没有给该局部变量赋值就会产生编译错误。

考点6

下面这段程序的输出结果是()

1
2
3
4
5
6
7
8
9
10
11
12
public class Main {
public static void main(String[] args) {
split(12);
}
public static int split(int number) {
if (number > 1) {
if (number % 2 != 0) System.out.print(split((number + 1) / 2));
System.out.print(split(number / 2));
}
return number;
}
}
  • A 12136
  • B 63121
  • C 61213
  • D 11236

正确答案: A

解析

考察方法进栈与出栈的顺序。先进后出
有个知识点,方法在出栈的时候,执行的是return语句。因为出栈就意味着方法结束并消费,如果没有return语句,那么方法出栈的时候什么都不执行,就直接销毁。
1.执行split(12)时,执行代码System.out.print(split(number / 2))
split(12/2)进栈,此时number=6;
2.执行split(6)时,执行代码System.out.print(split(number / 2))
split(6/2)进栈,此时number=3;
3.执行split(3)时,
第1行 if (number % 2 != 0)
第2行 System.out.print(split((number + 1) / 2));
第3行 System.out.print(split(number / 2));
按照顺序执行
先执行第2行
首先split((3+1)/2)进栈,此时number=2,
再执行split(2),那么split(2/2)进栈,此时number=1, 最后return 1,
注意此时第2行代码还没有结束
此时
split(2/2)出栈,输出1;
split((3+1)/2)出栈,输出2;
第二行代码结束,再执行第三行,此时number=3,执行System.out.print(split(number / 2))
split(3/2)进栈,number=1,return,那么就需要出栈了
split(3/2)出栈,输出1
split(6/2)出栈,输出3
split(12/2)出栈,输出6;
最终结果12136;
split(number)方法,最终返回的是number这个值,所以split(n)出栈的输出结果就是n
整理:
split(12/2)进栈
split(6/2)进栈
split((3+1)/2)进栈
split(2/2)进栈
split(2/2)出栈,输出1
split((3+1)/2)出栈,输出2
split(2/2)进栈
split(2/2)出栈,输出1
split(6/2)出栈,输出3
split(12/2)出栈,输出6

考点7

Which statement declares a variable a which is suitable for referring to an array of 50 string objects?(Java)

  • A char a[][];
  • B String a[];
  • C String[] a;
  • D Object a[50];
  • E String a[50];
  • F Object a[];

正确答案: BCF

解析