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程序员的基本修养-李刚》

阅读更多
个人分类: Java
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭