这个Core java Code的输出是什么?

ram*_*ani 5 java

public void getData(Object o[]) {
    System.out.println("In Side Array");
}

public void getData(Object o) {
    System.out.println("In Side Object");
}

public static void main(String[] args) {
    new JavaEx().getData(null);
}
Run Code Online (Sandbox Code Playgroud)

这里是打印数组块为什么,为什么它不打印对象块?

use*_*038 -2

也许这会让事情变得更清楚一些:

public void getData(Object o[]) {
    System.out.println("In Side Array");
}

public void getData(Object o) {
    System.out.println("In Side Object");
}
public static void main(String[] args) {
    Object[] array = null;

    new JavaEx().getData(array);
}
Run Code Online (Sandbox Code Playgroud)

此实现还将打印“ In Side Array ”,因为未初始化的数组可以是null。所以很明显,调用了数组方法。

  • 我不确定我的下一个陈述有多有效,但这是我一直使用的规则;编译器将始终使用最指定的正确方法。因此,在这种情况下,Object 比 Object[] 指定的要少(因为对象数组也是一个对象)。这就是为什么它在对象上打印数组的原因。 (2认同)