public class StaticTest { String name;//实例属性,也叫非静态属性 static String address="山西省";//静态属性,也叫类的属性 //构造方法 StaticTest(String name){ this.name=name; } //静态方法 public static void display(){ System.out.println("OK"); } //类存在,静态方法就存在,但是只有调用时,才会执行 public static void print(){ System.out.println("执行了print静态方法"); System.out.println(address); //System.out.println(name); 不能访问 display(); //show();//不能访问 } //实例方法 public void show(){ System.out.println("执行了show实例方法"); System.out.println(address+"--show--"); System.out.println(name+"--show--"); print(); study(); } public void study(){ System.out.println("执行了study实例方法"); } } class StudentTest{ public static void main(String[] args){ System.out.println(StaticTest.address);//静态变量可以使用类名来直接调用 //System.out.println(StaticTest.name);//实例变量不可以用类名来访问 StaticTest stu=new StaticTest("mama"); System.out.println(stu.name); System.out.println(stu.address);//静态变量也可以使用对象名来调用 stu=null; //System.out.println(stu.name);//报错:空指针异常 System.out.println(stu.address);//注意:当对象的值为null,可以访问static修饰的成员 //类名直接调用静态方法 System.out.println("--------"); StaticTest.display(); StaticTest.print(); System.out.println("--------"); StaticTest stu2=new StaticTest("baba"); stu2.show(); stu2.study(); //对象调用静态方法 System.out.println("--------"); stu2.display(); stu2.print(); System.out.println("--------"); } }
结果:
山西省
mama
山西省
山西省
--------
OK
执行了print静态方法
山西省
OK
--------
执行了show实例方法
山西省--show--
baba--show--
执行了print静态方法
山西省
OK
执行了study实例方法
执行了study实例方法
--------
OK
执行了print静态方法
山西省
OK
--------