一、static 关键字:代表静态的,可用于修饰 属性、方法、代码块、 **内部类
1. static 修饰的属性(静态变量或类变量)
①随着类的加载而加载,随着类的消失而消失(生命周期最长)
②static 修饰的属性可以被该类所有对象所共享
③一旦某个对象修改该属性值,其他对象的该属性值也会随之改变
④静态变量的存在优先于对象
⑤可以通过 "类名.类变量" 的方式调用
2. 类变量和实例变量的区别?
①内存中的位置不同
②生命周期不同
3. static 修饰的方法(静态方法或类方法)
①随着类的加载而加载
②静态方法的存在优先于对象
③可以通过 "类名.类方法" 的方式调用
④静态方法中不能使用非静态成员,非静态方法中可以使用静态成员
⑤静态方法中不能使用 this 和 super
二、类的成员之一:代码块(属性、方法、构造器)
1. 非静态代码块(初始化块):
①格式:类中的一对 {}
②每次创建对象时执行
③非静态代码块的执行优先于构造器
④用于为对象进行初始化。(通常用于为共性内容进行初始化)
⑤非静态代码块可以有多个,依次向下的顺序执行
2. 静态代码块:
①格式: static{}
②随着类的加载而加载,并且只加载一次。
③静态代码块的执行优先于非静态代码块
④静态代码块中不能调用非静态成员
⑤静态代码块可以有多个,依次向下的顺序执行
三、为属性赋初始值的方式
①默认值(缺省值)
②直接显示赋值
③构造器赋值
④代码块
顺序:① ②④ ③
注意:②④顺序执行
四、final 修饰符:代表最终的,可用于修饰 变量、方法、类。
①final 修饰的类不能被继承
②final 修饰的方法不能被重写
③final 修饰的变量叫常量,一旦被赋值,值不能改变。
1)命名规范:所有字母都大写,每个单词之间以 "_" 隔开。 例如: XXX_YYY_ZZZ
2)常量没有默认值,在使用前必须赋值(直接显示赋值、构造器赋值、代码块赋值)
若选择使用构造器赋值,必须保证所有构造器都为常量赋值