静态的成员变量与非静态的成员变量的区别:
1. 作用上的区别:
1. 静态的成员变量的作用共享一个 数据给所有的对象使用。
2. 非 静态的成员变量的作用是描述一类事物的公共属性。
2. 数量与存储位置上的区别:
1. 静态成员变量是存储方法 区内存中,而且只会存在一份数据。
2. 非静态的成员变量是存储在堆内存中,有n个对象就有n份数据。
3. 生命周期的区别:
1. 静态的成员变量数据是随着类的加载而存在,随着类文件的消失而消失。
2.非静态的成员数据是随着对象的创建而存在,随着 对象被垃圾回收器回收而消失。
/*
需求: 统计一个类被使用了多少次创建对象,该类对外显示被创建的次数。
*/
class Emp{
//非静态的成员变量。
static int count = 0; //计数器
String name;
//构造代码块
{
count++;
}
public Emp(String name){
this.name = name;
}
public Emp(){ //每创建一个对象的时候都会执行这里 的代码
}
public void showCount(){
System.out.println("创建了"+ count+"个对象");
}
}
class Demo11
{
public static void main(String[] args)
{
Emp e1 = new Emp();
Emp e2 = new Emp();
Emp e3 =new Emp();
e3.showCount();
}
}
当类被创建时 构造代码块的内容会放在构造方法中执行 当类被创建就会执行一次
当count是静态修饰 则输出3
非静态修饰 则输出1;