静态方法是属于类的,而普通方法是属于对象的。
属于类的静态方法可以在对象不存在的时候就能访问到,而普通方法必须先new一个对象才能用这个对象访问。当我们访问调用静态方法的时候(使用类名.静态方法名)这个时候就没有对象创建,所以普通方法是访问不到的。为了避免这种错误,所以java就不允许在静态方法中访问非静态方法。
还有纠正你的错误,main方法也满足我上面说的,你仔细看下,main方法中是不是先创建的对象,然后用对象去访问的呀。
1楼的解释很好的,其实很多的设计都是为了便于使用,以及不要造成分歧