Java错题记录(一)

看视频和书籍学习理论的时候,难免会有疏忽,或者自以为学明白了,其实有些地方不清楚甚至理解错误,通过做一些笔试题,能够明白自己的不足,也能加深印象,在此记录下来。

继承相关

  1. 子类父类代码执行先后顺序如下:

    • 父类静态代码块
    • 子类静态代码块
    • 父类非静态代码块
    • 父类构造器
    • 子类非静态代码块
    • 子类构造器

      当实例化子类对象时,首先要加载父类class文件,静态代码块是随着类的创建而执行的,所以父类静态代码块先执行;然后加载子类class文件,同理,执行子类静态代码块;实例化子类对象需要先调用父类构造方法,而调用构造方法前需要先执行该类的非静态代码块。

基本语法相关

  1. i++执行时,先使用i参与计算,然后i再自加。虽然知道其含义,但是碰到return i++;时,总以为返回的是i自加后的值,但其实是i的值,返回后i才自加。

    1
    2
    i = 0;
    return i++;//返回值为0
  2. 静态变量只能在类主体中定义,不能在方法中定义。 静态变量属于类所有而不属于方法。

内存相关

  1. 成员变量随着对象的创建而创建,因此存在于对象所在的堆内存;局部变量保存再栈内存。
-------------本文结束感谢您的阅读-------------