java的静态变量和非静态变量的区别

静态的成员变量与非静态的成员变量的区别:
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;

猜你喜欢

转载自blog.csdn.net/faker____/article/details/82585627