一、Static关键字
无论是否产生了对象或无论产生了多少对象,某些特定的数据在内存空间里只有一份;如:创建一个类,里面都是中国人,虽然每个人的姓名,年龄等不尽相同,但是他们的国籍都是中国,这就是在内存空间中只有一份的数据
静态变量与实例变量的对比:
1.static :静态的,static可以用来修饰属性和方法
2static修饰属性:静态变量(类变量)
属性是否使用static修饰,分为静态属性和非静态属性(实例变量)
实例变量:我们创建了类的多个对象,每个对象都独立的拥有一套类中的非静态属性,当修改其中一个对象中的非静态属性时,不会影响其他对象中的属性。
静态变量:我们创建了类的多个对象,多个对象共享一个静态变量,当修改其中一个对象中的静态变量时,会导致其他对象调用此静态变量时是修改过的
说明:①静态变量随着类的加载而加载
②静态变量的加载早于对象的创建,即不需要创建对象可以直接调用
③由于类只加载一次,所以静态变量在内存中只存在一份,存在于方法区的静态域中(如:System.out.,random.Math)
3使用static修饰方法:静态方法
①随着类的加载而加载,可以通过类.静态方法来调用
②静态方法中,只能调用静态的方法和属性,而非静态方法中既可以调用静态的方法,也可以调用非静态的方法
③静态的方法内,不能使用this和super关键字
二、对象的销毁
{ Example e =new Example();
e=null
}
①对象e超过作用范围,对象销毁
②对象e被置null时对象销毁