在java中调用静态方法

可能重复:
为什么在null引用上调用(静态)方法不会抛出NullPointerException?

任何人都可以解释为什么以下程序的输出被“ 调用

public class Test4{ public static void method(){ System.out.println("Called"); } public static void main(String[] args){ Test4 t4 = null; t4.method(); } } 

我知道我们可以使用类引用调用静态方法,但在这里我使用null引用调用。 请澄清我的疑问

在字节代码中

 Test4 t4 = null; t4.method(); 

将会

 Test4 t4 = null; Test4.method(); 

编译器会使用静态方法的类名转换调用。 请参考我自己提出的问题。

实例是否为null无关紧要,因为您正在调用静态方法。 这样想吧。

每个静态方法都与类方法等效, 而非静态方法实例方法等效。

因此,只要您使用静态方法或成员 ,实例所需的值无关紧要。

可以通过classname或实例调用静态方法。 我会尽量避免通过实例调用它们(也有很多工具警告你这样做是因为不好的做法)。