static声明的属性和方法属于全局变量区
java的内存分为四个部分
class Person{
String name;
int n;
static String country = "A城";
public Person(String name,int n) {
this.name =name;
this.n = n;
}
public void info() {
System.out.println(this.name + this.n + this.country);
}
}
public class _3_static {
public static void main(String[] args) {
Person per1 = new Person("张三",30);
Person per2 = new Person("李四",31);
Person per3 = new Person("王五",32);
per1.info();
per2.info();
per3.info();//张三 30 A城 ;李四 31 A城 ;王五 32 A城
per1.country = "B城";
per1.info();
per2.info();
per3.info();//张三 30 B城 ;李四 31 B城 ;王五 32 B城
}
}
创建一个对象就在栈存放一个名称(堆的地址),堆里放属性,所有的对象都指向全局数据区,只要修改了一个对象的全局属性,所有的都变了。
非static方法可以引用static方法,static方法不可以引用非static方法。
因此主方法是static的,在主方法中调用方法,必须是static的才能被调用。
public static void main(String args[])
args[]是运行时输入的参数