在两天内我在java考试,我无法弄清楚这个问题的答案:
class ClassA {
public String foo(Integer x , int y) {
return "Integer, int";
}
public String foo(int x, Double y) {
return "int, Double";
}
public String foo(Number x, Number y) {
return "Number, Number";
}
public String foo(Object x, Object y) {
return "Object, Object";
}
public static void main(String... args) {
ClassA a = new ClassA();
System.out.print(a.foo(5, 1.2f) + " ");
System.out.println(a.foo(null, null));
}
}
Run Code Online (Sandbox Code Playgroud)
什么输出?
答案是:
Number, Number Number, Number
Run Code Online (Sandbox Code Playgroud)
我知道java总是选择最指定的方法,这就是为什么a.foo(null,null);要调用Number,Number方法而不是 …
希望有人知道这个Java认证问题的答案:
public static void main(String[] args) {
String[] sa = {"d", "c", "a", "b" };
int x = Arrays.binarySearch(sa, "b");
Arrays.sort(sa);
int y = Arrays.binarySearch(sa, "b");
System.out.println(x + " " + y);
}
Run Code Online (Sandbox Code Playgroud)
哪两个结果可能?(选择两项.)
A)7 0
B)7 1
C)7 3
D)-1 0
E)-1 1
F)-1 3
唯一真正的答案是E)-1 1,因为如果你玩二进制搜索算法,这是唯一可能的输出.但他们希望我选择两个...所以第二个必须是B)7 1然后,因为排序数组中的第二个二进制搜索将始终返回1.
所以我的问题是,为什么B)7 1可能的结果?更具体:如何可能,未排序数组中的第一个二进制搜索返回7?
提前致谢