Java对象及其内存管理

一 实例变量和类变量

  Java中的变量大体可分为成员变量和局部变量。其中局部变量可分为如下三类:

    形参;

    方法内的局部变量;

    代码块内的局部变量。

  Java中局部变量都存储在栈内存中。

  类体内定义的变量被称为成员变量。若定义时没有static关键字修饰,则称为非静态变量或实例变量;反之,则称为静态变量或类变量。

  辨析:Java中static关键字?

    static的作用是将实例成员变为类成员,它只能修饰类里定义的成员部分,比如,变量,方法,内部类(枚举与接口),初始化块,若没有使用static修饰,则它们属于类的实

  例;若使用了static修饰,则属于类本身。由此可见:static只能修饰类里的成员,不能修饰外部类,不能修饰局部变量,局部内部类。

  二者的初始化时机

    类变量通常随着类的初始化而初始化,而实例变量通常随着对象的初始化而初始化,Java对象的初始化方式有:构造器,初始化块和定义变量时指定初始值。

   实例变量的初始化:

    定义时指定初始值:

    非静态初始化块中指定初始值;

    构造器中指定初始值;

  类变量的初始化:

    定义类变量时指定初始值;

    静态初始化块中指定初始值。


二 父类构造器

  子类或实例对象调用父类构造器执行初始化,分为以下几种情况:

    在子类构造器的第一行代码中使用super显式调用,根据super()方法的参数来决定具体父类的哪个构造器;

    在子类构造器的第一行代码中使用thisr显式调用本类中重载的构造器,具体调用由this()方法参数决定;

    既没有super也没有this调用,则隐式调用父类无参构造器。

  super,this都必须且只能位于构造器中的第一行


  当变量的编译时类型和运行时类型不同时,通过该变量访问它引用的对象实例变量是,该实例变量的值有声明该

变量的类型决定,但通过该变量调用它引用的对

  象的实例方法时,该方法行为将由它实际应用的类型决定。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值