day_8:private、this、static、成员变量和局部变量区别
Private的使用
private:访问修饰符,私有
修饰属性:不能被外界直接调用
修饰方法:不能被外界直接调用
this关键字
this属性:访问本类的成员属性(成员变量和局部变量同名的情况,成员变量无效)
this方法:访问本类的成员方法
this():访问本类的构造方法,只能放在构造方法的第一句
static关键字
static修饰属性:静态属性、类属性
生命周期:此类的字节码文件加载到方法区时,会扫描类里的所有属性,并把静态属性存入到静态常量区中
什么时候字节码文件加载到方法区中?(二选一)
1.第一次new当前对象时
2.调用当前类的静态方法
销毁:项目结束时
应用场景:final+static
static修饰属性和成员变量的区别:static修饰的属性在类的加载过程中只分配一次内存空间;而成员变量,每创建一个实例就分配一次内存空间。
static修饰方法:类方法,直接用类名即可调用
应用场景:工具类
静态代码块:初始化数据
类的字节码文件被加载时调用
构造方法 VS 代码块 VS 静态代码块
调用优先级:静态代码块 > 代码块 > 构造方法
应用场景:初始化数据
构造方法:从外部传入数据进行初始化
代码块:初始化内部数据(每次调用对象都被调用)
静态代码块:初始化内部数据(只有类文件加载时才会被调用)
静态的使用:
l 静态变量
静态变量所有对象共享一份,非静态的成员变量,每个对象独享一份
l 静态代码块
执行时机:当我们的类被加载的时候就会被执行,不管是否创建对象
执行次数:整个过程仅执行一次,不管创建多少对象都只执行一次
l 静态方法
可以通过对象或者类名来调用,但是建议用类名来调用
成员变量和局部变量的区别
成员变量:定义在类中,跟成员方法同级别
局部变量:方法的参数,或者定义在方法内的变量
区别:
位置不同
生命周期不同或作用域不同
内存的位置不同(后面讲对象内存图时再讲)
初始值不同,局部变量默认不给初始化,需要你自己去初始化,才能使用
奇葩考点,成员变量和局部变量同名的情况,考优先级问题

浙公网安备 33010602011771号