一 单选题
1-5:B C D D A 6-10:D ACD C D B
11-15:C B AC AB AB 16-20:C C D A B
二 填空题(每个空一分)
1. 6world123
2. 1 1 -1 -1
3. false
4. 是
5. 16 2n+1.(前边数字对即可)
6. 10 1.5倍 .(前边数字对即可)
7. 字节码文件.
8. Exception Throwable.
9. 5
10. 继承、封装和多态
三.简单题
1. 存在使i+ 1 < i的数吗,如果存在说明情况,如果不存在说明理由.(4分)
答案:存在(2分)
解析:如果i为int型,那么当i为int能表示的最大整数时,i+1就溢出变成负数了,此时不就<i了吗。(2分)
2、阐述final、finally、finalize的用途和区别。 (6分)
答:
(1)final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
内部类要访问局部变量,局部变量必须定义成final类型,例如,一段代码…… (2分)
finally是异常处理语句结构的一部分,表示总是执行。(2分)
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法(2分)
3、Java支持的数据类型有哪些?每种数据类型的字节长度是多少?什么是自动拆装箱?(6分)
Java语言支持的8中基本数据类型是:
- byte 1
- short 2
- int 4
- long 8
- float 4
- double 8
- Boolean 1
- char 2 (4分,答出基本类型2分,字节长度答对全部2分,其余0分)
自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把int转化成Integer,double转化成double,等等。反之就是自动拆箱。(2分,意思到位即可)
4. 下面程序能正常运行吗? 能的话输出什么?不能的话原因是什么?(6分)
答案:
能正常运行,输出为haha(2分),
因为null值可以强制转 换为任何java类类型,(String)null也是合法的。但null强制转换后是无效对象,其返回值还是为null,而static方法的调用是和 类名绑定的,不借助对象进行访问所以能正确输出。反过来,没有static修饰就只能用对象进行访问,使用null调用对象肯定会报空指针错了。这里和 C++很类似 (4分)
5 、哪些情况下可以终止一个正在运行的线程的方式?(6分)
抛出异常或错误;(2分)
调用stop()(不建议使用,容易导致死锁);(2分)
执行完run(),线程正常结束。(2分)
6. 下面程序的运行结果是什么? (6分)
答案:(全对才有分)
static A
static B
I'm A class
HelloA
I'm B class
HelloB
16. 重写和重载的区别?
(1)重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同);(2分)
(2)重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现;只能比父类抛出更少的异常,或者是抛出父类抛出的异常的子异常;子类方法的访问权限只能比父类的更大,不能更小。如果父类的方法是private类型,那么,子类则不存在覆盖的限制,相当于子类中增加了一个全新的方法;(4分)