static关键字
修饰范围: 属性、方法、代码块和内部类
(被static修饰的属性方法不能被子类继承)
被static修饰的具有以下特点:
1.随着类的加载而加载,而且只加载一次
2.优先于对象存在
3.修饰的成员被所有的类共享
4.访问权限允许时,可以不创建对象直接被类调用
static 修饰属性:称为类变量或静态变量
类变量:多个对象公用静态变量时,当通过其中一个实例对象修改该静态属性时,会导致其他对象调用此静态变量时是修改过的;
实例变量:创建类的对象时,每个对象都独立的拥有一套完整的非静态属性,修改该对象的实例属性石不会改变其他对象的该实例属性;
静态属性的其他说明:
1.静态变量随着类的加载而加载,可以直接通过类名.属性名的方式
2.静态变量的加载早于对象的创建
3.由于类只加载一次,则静态变量在内存中也只存在一份,存在方法区的静态域中
static修饰方法:
1.静态方法随着类的加载而加载
2.静态方法里面只能调用静态方法和静态属性
3.对象也可以调用静态属性和静态方法
注意事项:静态方法里面不能使用this和suoer等关键字(可以从生命周期的角度去理解);
static修饰代码块:(代码块只能被static修饰)
静态代码块: 非静态代码块
1.内部有输出语句
2.随着类的加载而加载,且只执行一次
3.随着类的加载而执行,作用是可以初始化类的信息
4.如果类中声明了多个静态的代码块,按声明的先后顺序执行(先于非静态)
5.静态代码块只能调用静态的属性和方法
非静态代码块:
1.内部有输出语句
2.随着对象的创建而执行
3.没创建一次对象就执行一次非静态代码块
4.可在创建对象时对属性进行初始化
5.可以调用静态和非静态属性和方法