java对象及内存管理

1. 静态变量的初始化
这里写图片描述
输出结果为-2.8和17.2
这里写图片描述
这里写图片描述

2. 访问子类对象

public class Base {
    private int i = 2;
    public Base() {
        System.out.println(this.i);// 2
        this.display();// 0
        System.out.println(this.getClass());// Derived
        // this的编译类型是Base,无法调用子类的sub()方法
        // this.sub();
    }
    public void display() {
        System.out.println(i);
    }
}

这里写图片描述
Java对象是由构造器构造的吗?实际上,构造器只是负责对Java对象实例变量执行赋值,在执行构造器之前,该对象所占的内存已经被分配出来了。
这里写图片描述
由于实例变量经过编译后会被提取到构造器中,故Base的构造器的第一行代码其实为 i=2;
这里写图片描述
(在下面第4点里面有解释)

3. 调用被子类重写的方法
这里写图片描述
这里写图片描述
这里写图片描述

4. 继承成员变量与继承方法的区别
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

5. final “宏变量”
在上面第1点中,若将staitc double initPrice用final修饰,两处都会输出17.2:
这里写图片描述
再看一个例子
这里写图片描述
将str1、str2用final修饰即可
这里写图片描述
注:以上内容摘自《疯狂java程序员的基本修养-李刚》

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值