【发布时间】:2015-09-05 01:54:42
【问题描述】:
public class Sample {
public void method()
{
System.out.println("normal hai");
}
public static void method1()
{
System.out.println("static hai");
}
public static void main(String[] args) {
Sample s = null;
s.method1();
s.method();
}
}
输出是:
Exception in thread "main" java.lang.NullPointerException
at com.csvfile.sample.main(Sample.java:22)
static hai
为什么顺序变了?它应该输出:
static hai
Exception in thread "main" java.lang.NullPointerException
at com.csvfile.sample1.main(Sample.java:22)
【问题讨论】:
-
@kocko 因为这是他在...中调用方法的顺序
-
在实例变量上调用静态方法是一种糟糕的编码风格。始终在类本身上调用静态方法:
sample1.method1() -
@Marvin:不同的问题。在那个问题中,写入了不同的流。
-
@EricJ.:OP 想知道他的“静态 hai”(写给
System.out)和他的堆栈跟踪(通常写给System.err)的顺序。我不明白这是一个不同的问题。
标签: java static-methods