文章目录
- 1
- 2.
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
1
答案:
D
解:
2.
答案:
A
解:
会被初始化为0
3
答案:
C
解:
对于B选项,java函数签名包括两部分:函数名,参数列表;所以无法用返回值区分不同函数;但是对于构造函数则是例外,普通函数可以通过返回值和构造函数区分开。(这里和C++是不一样的,也就是说C++的构造函数和普通函数一样)
对于C选项,constructor确实new了一个instance
对于反射:
也是一样,也就是说你不可能调用constructor而不去new 一个对象。
而对于clone和反序列化,则根本没有调用constructor,而是从二进制字节流得到对象,也就是说,这句话反过来是错误的。
4
答案:
C
解:
这个题目其实没什么意义。
5
答案:
C
解:
servlet生命周期由容器控制,init()用于初始化servlet实例,destroy()方法用于回收Servlet申请的资源或进行其它的重要的处理。
6
答案:
B
解:
只支持单重继承。
7
答案:
C
解:
考察访问权限:
public:全都可以访问
protect:自己和子类可以访问
默认:同一个包内的可以访问
private:只有自己能访问
8
答案:
E
解:
这题也没什么意思,不过我把term()方法和intern()方法混淆了==。也可以提出一个更有价值的:
9
答案:
C
解:
这个考的比较偏,有个隐式的类型转换在这里(C++则没有)
10
答案:
B
解:
还是类型转换…
11
答案:
E
解:
start()函数重复调用的确可能报错,但是是对于同一个Thread对象而言的。新建线程调用start启动它并不会报错。
12
答案:
B
解:
Java不像是C++,会将父类同名函数"隐藏"起来,我们仍然可以通过super调用父类同名函数,子类会拷贝所有的父类函数,看起来就像子类"拥有"了父类的函数一样,所以,对于函数如果只有返回值的不同,就会出现"重定义"的错误。(在C++中这样是合法的,因为父类同名函数被隐藏并且bptr指向了子类的函数!)
13
答案:
D
解:
一个取反运算
14
答案:
D
解:
String类型不能更改的原因是其使用了享元模式,s并不在堆中而是在字符串字面量池中。为什么字符串常量池不能修改呢?我也不太清楚,字符串常量池在jdk13以后也是存在堆中了,但是它设计理念是“常量”,肯定是不能修改的。
15
答案:
ABD
解:
这个题目大概是给错了。
Java和C++都不会允许将父类塞给子类。
16
答案:
A
解:
transient和static修饰的不会保存到文件中,父类的name没有序列化,不会保存到文件中。
17
答案:
B
18
答案:
A