1 //静态与非静态之间的调用问题。 2 public class StaticDemo 3 { 4 /* 5 此处演示了,静态的方法(此处是main方法)不能直接调用非静态的方法,可以通过创建该类对象来调用 6 public void info() 7 { 8 System.out.println("简单的info方法!"); 9 } 10 public static void main(String[] args) 11 { 12 StaticDemo s = new StaticDemo(); 13 s.info(); 14 } 15 */ 16 public static void info() 17 { 18 System.out.println("简单的info方法!"); 19 } 20 public static void main(String[] args) 21 { 22 StaticDemo s = new StaticDemo(); 23 s.info(); //这样用对象来调用静态成员也是对的,单不推荐这样调用,因为静态 24 //的成员就是应该用类名来调用的。 25 26 // new StaticDemo().info();//和上面两句是一样的效果。只不过是使用了匿名的对象来调用而已。 27 28 // info(); //这样调用是对的,因为默认使用了类名调用,和下面的调用等价。 29 30 // StaticDemo.info(); //这是底层的调用原理,调用静态时,如果不是用对象来调用 31 //,并且省略的类名,则默认使用类名调用即下面一段话: 32 //(《疯狂Java讲义》如果调用static修饰的成员(包括方法, 33 //成员变量)时省略了前面的主调,那么默认使用该类作为主调。) 34 } 35 }