代码:
public class Demo1 {
public String name;
public static int num;
public static void show(){
System.out.println("静态的show方法");
System.out.println(num);
//System.out.println(name);//错误,无法调用到name
}
public void test(){
System.out.println(name);
System.out.println(num);
}
public void test2(){
Demo1.show();
this.show();
this.test();//非静态方法可以访问非静态方法也可以访问静态方法
}
public static void test3(){
Demo1.show();//this代表本类对象,对象也是后来才存在的,静态方法只能访问静态方法
}
}
public class Demo {
public static void main(String[] args) {
Demo1 demo1 = new Demo1();
demo1.name="小白";
Demo1.num=10;
demo1.test();
demo1.test2();
Demo1.test3();
Demo1.show();
}
}
- 总结:静态只能访问静态的,非静态既能访问静态的也能访问非静态的。静态的直接可以用类名调用,也可以创建对象调用但不推荐,非静态的需要创建对象再调用。
- 成员变量和静态变量的区别:
成员变量存在于堆,静态变量存在于方法区的共享区
成员变量随着对象的创建而存在,消失而消失,静态变量随着类的加载而加载,消失而消失
成员变量属于一个变量,静态变量属于类