1.判断对错。在java的多态调用中,new的是哪一个类就是调用的哪个类的方法。
答案是错误,java多态有两种情况:重载和重写。今天在周志明那本JVM的书籍中正好看到了分派,这个题考的就是相关的内容。
在重写中,运用的是动态单分配,是根据new的类型确定对象,从而确定调用的方法;
在重载中,运用的是静态多分派,即根据静态类型确定对象,因此不是根据new的类型确定调用的方法。
2.设有下面两个赋值语句:下述说法正确的是()D
a = Integer.parseInt("1024");
b = Integer.valueOf("1024").intValue();
a是整数类型变量,b是整数类对象。
a是整数类对象,b是整数类型变量。
a和b都是整数类对象并且它们的值相等。
a和b都是整数类型变量并且它们的值相等。
这个题亲自试了,我才选的D,对Integer的相关方法不大了解。
- parseInt()是把String 变成int的基础数据类型;
- Valueof()是把String 转化成Integer对象类型;
- intValue()是把Integer对象类型变成int的基础数据类型;
3.输出结果为1
String str = "";
System.out.print(str.split(",").length);
split方法返回是String数组,数组类型直接用属性length获取长度,所以String[]数组类型应该用length获取长度,不是length()…
public String[] split(String regex) {
return split(regex, 0);
}
原字符串是空的,没有分隔符,直接返回源字符串,分割出来的是空的字符串数组,空也算是个元素,所以结果是1.
4.当我们需要所有线程都执行到某一处,才进行后面的的代码执行我们可以使用?A
A.CountDownLatch
B.CyclicBarrier
C.Semaphore
D.Future
从牛客网的解析上看到的:CountDownLatch 是等待一组线程执行完,才执行后面的代码。此时这组线程已经执行完。
CyclicBarrier 是等待一组线程至某个状态后再同时全部继续执行线程。此时这组线程还未执行完。
评论区比较倾向于选B,为什么选A也是很迷,这里不追究选啥了,仔细记记CountDownLatch 、CyclicBarrier是干啥的。