2019年11月9日 java1
考点1
可以把任何一种数据类型的变量赋给Object类型的变量。
- A 对
- B 错
正确答案: A
解析
- 引用类型的对象都可以赋值给Object变量;
- 而八大基础数据类型会先自动装箱成包装类型,然后再赋值给Object,所以编译运行都不会报错。
考点2
以下不是修饰符final的作用的是( )。
- A 修饰常量
- B 修饰不可被继承的类
- C 修饰不可变类
- D 修饰不可覆盖的方法
正确答案: C
解析
final的作用
- final修饰的变量是常量,
- 如果修饰的是引用变量则变量中的引用地址不可变,但是地址中的内容可以变。
- 如果修饰的是基本类型变量,则基本类型变量的值不可改变。
- final修饰的方法不可被重写,但是还是可以重载
- final修饰的类不可继承。
考点3
对于abstract声明的类,下面说法正确的是
- A 可以实例化
- B 不可以被继承
- C 子类为abstract
- D 只能被继承
- E 可以被抽象类继承
正确答案: E
解析
A,抽象类不能实例化,因为有抽象方法未实现
B,可以被继承。派生类可以实现抽象方法
C,子类可以是抽象的,也可以非抽象的
D,只能被继承说法太肯定,不正确
E,可以被抽象类继承,也可以被非抽象类继承
考点5
下列程序test 类中的变量c 的最后结果为
1 | public class Test { |
- A 10
- B 0
- C 19
- D 编译出错
正确答案: D
解析
局部变量不会自动进行初始化,所以当使用局部变量时,而没有给该局部变量赋值就会产生编译错误。
考点6
下面这段程序的输出结果是()
1 | public class Main { |
- 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