1.静态方法优先于对象被创建
2.非静态方法通过对象创建
3.静态方法在内存中创建后,还没有创建对象,所以不能调用非静态方法和变量。
//null 类型调用静态方法,输出什么?
public class Test{
private static void Print(){
System.out.println("Print()");
}
public static void main(String[] args) {
((Test)null).Print();
}
}
问输出什么?
//输出是Print()
因为:1.Print()是静态方法,不用对象也可以调用,((Test)null).Print() 这种格式也可以。
2.null 可以转换成任意引用类型
3.((Test)null).Print() 相当于 Test t = null; t.Print();
4.如果将Print()方法的修饰符去掉,执行时会报空指针异常,因为是在静态方法中调用非静态方法。