java基础-----------对象与内存控制

一。实例类变量和类变量

例一:




编译时将提示“非法前向引用”,两个类变量(即用static修饰)也不允许采用“非法前向引用”。
可改为



因为类变量的初始化时机总是处于实例变量的初始化之前

1.1实例变量和类变量的属性

 


解:第一个代码输出2
       第二个代码输出2.因为Person对象p本身并没有eyeNum类变量,因此程序通过p来访问eyeNum类变量时,底层  依然会转换为通过Person类访问eyeNum类变量。底层为:当程序创建p对象时,系统不再为eyeNum类变量分配内存空间,执行初始化而只为p对象的实例变量执行初始化------因为类变量属于Person类本身
第三个代码输出3,3,3。当Person类访问eyeNum类变量被改变以后,程序通过p,p2,person访问eyenum时都将输出3


1.2。实例变量的初始化时机
1.1实例变量和类变量的属性
  程序可在三个地方对实例变量执行初始化:1。定义实例变量时指定初始值
2.非静态初始化块中对实例变量指定初始值
3.构造器中对实例变量指定初始值
注:每当程序调用指定构造器创建java对象时,该构造器必然会获得执行机会,除此之外,该类所包含的非静态初始化块将会获得执行的机会,而且总是在构造器执行之前。
     非静态初始化块和定义实例变量时指定初始值,它们的执行顺序与它们在源程序中的排列顺序相同




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值