static:静态的
static主要用来修饰类的内部结构:属性、方法、代码块、内部类。通过static修饰的结构叫静态…,例如静态成员,静态方法等。
静态
1、静态变量和实例变量
- 实例变量:我们创建了多个类对象,每个对象都独立的拥一套非静态属性。当修改其中一个对象中的非静态属性时,不会导致其他对象中同样的属性值的修改。
- 静态变量:我们创建了类的多个对象,多个对象共享同一个静态变量。当通过某一个对象修改静态变量时,会导致其他对象调用此静态变量时,是修改过了的。
static修饰属性的其他说明:
1、 静态变量随着类的加载而加载。可以通过"类.静态变量"的方式进行调用
2、静态变量的加载要早于对象的创建。
3、由于类只会加载一次,则静态变量在内存中也只会存在一份:存在方法区的静态区中。
2、静态方法(只能访问静态成员变量)
1)静态方法中不能用this和super关键字。
2)由于在调用静态成员方法时,并不会将对象的引用传递过去,因此不能访问对象的非静态成员变量、静态成员方法,访问方式:“类名.静态方法”
3)而且由于静态成员方法通常以“类名.静态方法”的形式访问,如果可以访问“非静态成员变量”,那么编译器也就无法确定:访问的“非静态成员变量”是属于哪个对象,在内存中的位置,甚至根本就还没有对 象,为避免这种情况的出现,编译器一定不会允许“静态成员方法”访问“非静态成员变量”