有些时候,我们需要在jvm 中维护一份共享数据,使得每个使用对象的人,都能共享这份数据,这个时候怎么办呢,就需要使用静态成员变量。
静态的成员变量只会在数据共享区中维护一份,而非静态成员变量的数据会在每个对象中都维护一份的。。
static(静态\修饰符)
1. static修饰成员变量 :如果有数据需要被共享给所有对象使用时,那么就可以使用static修饰。
静态成员变量的访问方式:
方式1: 可以使用对象进行访问。
格式: 对象.变量名。
方式二: 可以使用类名进行访问。
格式: 类名.变量名;
注意:
1. 非静态的成员变量只能使用对象进行访问,不能使用类名进行访问。
2. 千万不要为了方便访问数据而使用static修饰成员变量,只有成员变量的数据是真正需要被共享的时候
才使用static修饰。
static修饰成员变量的应用场景: 如果一个数据需要被所有对象共享使用的时候,这时候即可好实用static修饰。
内存图
2. static修饰成员函数:
static 修饰成员函数的应用
统计一个类被使用了多少次创建对象,该类对外显示被创建的次数。
package ViewTest;
public class Count {
public static void main (String[] args){
ds a = new ds();
ds b = new ds();
ds c= new ds();
ds d = new ds(4);
}
}
class ds{
public static int number =0;
ds(){
number++;
System.out.println(number);
}
ds(int c){
number++;
System.out.println(number);
}
}
在上述代码中,由于构造函数会在每次对象创建时候,都会执行一次,因此,计数器应写在构造函数中;如果一个类中有多个构造函数的话,那么,
在创建对象过程中,就不一定会调用哪个构造函数了,因此,计数器需要在每个构造函数中都维护一份,这时候应该联想到知识点,构造代码块。程序可以将
每个构造函数中维护的number++技术器,放到构造代码块中,这样,无论创建对象时调用哪个构造函数,都不会影响计数器。