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  静态方法

      可以通过对象或者类名来调用,但是建议用类名来调用

成员变量和局部变量的区别

  成员变量:定义在类中,跟成员方法同级别

  局部变量:方法的参数,或者定义在方法内的变量

  区别: 

    位置不同

    生命周期不同或作用域不同

    内存的位置不同(后面讲对象内存图时再讲)

    初始值不同,局部变量默认不给初始化,需要你自己去初始化,才能使用

    奇葩考点,成员变量和局部变量同名的情况,考优先级问题  

 

posted @ 2018-10-24 20:13  cmlx  阅读(169)  评论(0)    收藏  举报