这些都是在平时的面试或者什么时候会出现的小问题陷阱,再次做下记录和大家共勉
1)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
package
Wangyi;
class
Base
{
public
void
method()
{
System.out.println(
"Base"
);
}
}
class
Son
extends
Base
{
public
void
method()
{
System.out.println(
"Son"
);
}
public
void
methodB()
{
System.out.println(
"SonB"
);
}
}
public
class
Test01
{
public
static
void
main(String[] args)
{
Base base =
new
Son();
base.method();
base.methodB();
}
}
|
问这个程序的输出结果。
正确答案: D 你的答案: C (错误)
Base SonB
Son SonB
Base Son SonB
编译不通过
解析:
下面这道题,我在分析的时候,已经想到了在new多态的时候,需要小心(需要注意多态是需要条件的:比如:必须extends和重写父类方法)
但是没有注意到:
父类的引用无法访问子类独有的方法
2)
有如下4条语句:()
1
2
3
4
|
Integer i01=
59
;
int
i02=
59
;
Integer i03=Integer.valueOf(
59
);
Integer i04=
new
Integer(
59
);
|
以下输出结果为false的是:
正确答案: C 你的答案: D (错误)
System.out.println(i01==i02);
System.out.println(i01==i03);
System.out.println(i03==i04);
System.out.println(i02==i04);
解析:
在分析这道题的时候确实是在CD两个选项之间犹豫,当时已经忘记什么装箱拆箱之类的概念了
下面分析一下这道题目了
A:Integer i01 = 59. 直接赋值数字,java会自动装箱,自动调用Integer.valueOf(59).
B:int和integer(无论new否)比,都为true,因为会把Integer自动拆箱为int再去比
C:
整数类型在-128~127之间时,会使用缓存,造成的效果就是,如果已经创建了一个相同的整数,使用valueOf创建第二次时,不会使用new关键字,而用已经缓存的对象。所以使用valueOf方法创建两次对象,若对应的数值相同,且数值在-128~127之间时,两个对象都指向同一个地址。
3)