关于static静态变量的灵活使用

 
 
静态static
		在一个类中可以修饰 成员变量, 成员方法. 
		静态成员变量(类变量)
			直接通过类名类访问.
			静态成员变量和非静态成员变量的区别:
				 存储位置: 静态成员变量是随着类的加载(只加载一次)而加载,存在于方法区, 在内存中只有一份. 随着类的消失而消失...  
					   非静态成员变量随着对象的创建存在于堆内存, 在内存中可以有多份,每个对象都要维护一份,随着对象的消失而消失...
				  生命周期:
					 静态成员变量随着类的加载而加载,随着类的消失二消失,长
					非静态成员变量随着对象的创而出现,随着对象的回收而消失, 短.
			静态成员变量的应用:
				静态成员变量在程序只有一份,可以被所有的对象所共享... 
				例如: 统计创建对象的个数...  如果对象和对象之间出现了共享数据,可以通过设置静态的. 
		静态成员方法
			直接可以通过类名来访问
			静态方法不能访问非静态成员变量
				静态方法时,可以直接通过类名来访问的, 只需要加载类, 但是不需要创建对象. 静态方法就可以执行了. 
				此时对象还没有创建,非静态成员变量还不存在...就无法访问了
			注意: 静态方法中也不能访问this.  只需要考虑静态和非静态的声明周期即可.
			静态方法只能访问静态成员变量, 静态方法只能访问静态方法.-> 静态方法只能访问静态的类型的成员.
		简单记忆:
			静态是基于类. 
			非静态的基于对象. 
			类先加载,对象后创建. 类只加载一次在方法区,对象可以创建对象存在于堆内存. 
		静态代码块:
			staitc{
				
			}
			加载类时,给类初始化的...  有与类只加载一次,静态代码块只会执行一次...

你可能感兴趣的:(类,对象,内存)