文章目录
static关键字
1.static修饰成员变量
在引入static关键字之前呢,我们先看这样一个示例:
1)设计一个Peple类如下:
public class People {
//实例变量
private String name;
private int age;
private int count;//用来统计对象的生成个数
//构造方法
public People(String name, int age) {
this.name = name;
this.age = age;
count++;
}
//实例方法
public void work() {
System.out.println("好好学习,年薪百万,迎娶白富美!");
}
public int getCount() {
return count;
}
}
2)设计一个TestDemo类如下:
public class TestDemo {
public static void main(String[] args) {
People people1 = new People("王昭君", 18);
People people2 = new People("赵云", 20);
People people3 = new People("安琪拉", 19);
People people4 = new People("吕布", 21);
People people5 = new People("貂蝉", 20);
}
}
☛在TestDemo中我们new了5个对象,调用了5次People类中的构造函数,那么count值为多少呢?因为每new一个对象,在堆上开辟一个对象,我们知道对象的内存布局分为三部分,对象头、实例变量、内存填充,一个对象一份实例变量,所以我们虽然new了5个对象,只是在每个对象中实现了count++,count的值都为1;
☛那么怎么用count来实现统计对象的个数呢?也就是让每个对象共用一份变量?这就要引入static关键字啦!
当类中的变量用static关键字来修饰的时候,变量就变成了静态变量。静态变量是随着类的字节码的加载而被加载进内存的,所以只要程序一启动运行到该类时就会被加载进内存,不管创建了多少个对象在内存中只存储一份,跟对象无关。它是保存在方法区当中的,无论多少个对象该静态变量在内存中都只有一份。
修改上述示例中的代码,count用static关键字来修饰。
People类
public class People {
//实例变量
private String name