static
业务逻辑:声明一个变量用于统计个数,这个变量应该被类的实例共享(可以被所有的对象访问);
所以这个变量应该放在方法区。
所以这样的变量应该由static来声明
static可以修饰变量、方法、代码块和内部类
static属性属于这个类所有,即由该类创建的所有对象共享同一个static属性。
可以在对象创建后通过 对象名.属性名 和 类名.属性名 两种方式来访问(推荐 类名.属性名这种方式)。也可以在没有创建任何对象之前通过类名.属性名的方式来访问
static方法也可以通过对象名.方法名和类名.方法名两种方式来访问
static代码块:当类被第一次使用时(可能是调用static属性和方法,或者创建其对象)执行静态代码块,且只被执行一次,主要作用是实现static属性的初始化
static内部类:属于整个外部类,而不是属于外部类的每个对象。不能访问外部类的非静态成员(变量或者方法),.可以访问外部类的静态成员
static变量和非static变量的区别(都是成员变量,不是局部变量)
1.在内存中份数不同
不管有多少个对象,static变量只有1份。对于每个对象,实例变量都会有单独的一份
static变量是属于整个类的,也称为类变量。而非静态变量是属于对象的,也称为实例变量
2.在内存中存放的位置不同
静态变量存在方法区中,实例变量存在堆内存中*
3.访问的方式不同
实例变量:对象名.变量名stu1.name="小明明";
类名.变量名Student.schoolName="东三旗小学";
4.在内存中分配空间的时间不同
实例变量:创建对象的时候才分配了空间。静态变量:第一次使用类的时候