对象与内存控制——实例变量与类变量

1、Java程序的变量大体可分为成员变量和局部变量。

    类体内定义的变量被称为成员变量。如果定义该成员变量时没有使用static修饰,该成员变量又称为非静态变量或实例变量;如果使用了static修饰,则该成员变量又可被成为静态变量或类变量。

局部变量:包括如下三类1、形参 2、方法内的局部变量 3、代码块内的局部变量 ; 局部变量的作用时间很短,它们都被存储在方法的栈内存中。

 2、Java要求定义成员变量时必须采用合法的前向引用。 如果一个是实例变量,一个是类变量,则实例变量总是可以引用类变量因为类变量的初始时机总是处于实例变量的初始化时机之前。

3、在同一个JVM内,每个类只对应一个Class对象,但每个类可以创建多个Java对象。 由于同一个JVM内每个类只对应一个Class对象,因此同一个JVM内的一个类的类变量只需要一块内存空间,但对于实例变量而言,该类每创建一次实例,就需要实例变量分配一块内存空间。也就是说,程序中有几个实例,实例变量就需要几块内存空间。

4、实例变量的初始化时机:从程序运行的角度来看,每次创建Java对象都会为实例变量分配内存空间,并对实例变量执行初始化。

      从语法角度来看,程序可以在3个地方对实例变量执行初始化:1、定义实例变量时指定初始化;2、非静态初始化块中实例变量指定初始值;3、构造器中对实例变量指定初始值。其中第1、2种方式(定义时指定的初始值和非静态初始化块指定的初始值)比蒂3种方式(构造其中指定的初始值)更早执行但第1、第2种方式的执行顺序与它们在源程序中的排列顺序相同。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值