「已注销」 2015-09-21 03:44 采纳率: 50%
浏览 1479

Java的变量初始化顺序问题

图片说明

结果为0 很有意思 有木有!变量初始化顺序是显示初始化之后再构造方法初始化对吧,
答案为何如此,求详解

 class Base 
{
    private int i = 2;
    public Base()
    {
        System.out.println(i);
        this.display();
    }

    public void display()
    {
        System.out.println(i);
    }
}
class Derived extends Base
{
    private int i = 22;
    public Derived()
    {
        //System.out.println(i);
        i = 222;
    }
    public void display()
    {
        System.out.println(i);
    }
}
public class Test
{
    public static void main(String[] args)
    {
        new Derived();
    }
}

  • 写回答

3条回答 默认 最新

  • Robot-S 2015-09-21 03:47
    关注

    1.在调用构造初始化之前,会首先对成员变量进行自动初始化。
    public class Counter {
    int i;
    Counter() {
    i = 7 ;
    }
    }

    i的值首先会被置为0,然后才是调用构造器,使得i变成7。

    2.成员变量的初始化顺序为定义的先后顺序。
    class Bowl {
    Bowl(int mar......
    答案就在这里:JAVA变量初始化顺序
    ----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

    评论

报告相同问题?

悬赏问题

  • ¥15 Qt下使用tcp获取数据的详细操作
  • ¥15 idea右下角设置编码是灰色的
  • ¥15 全志H618ROM新增分区
  • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示
  • ¥15 NAO机器人的录音程序保存问题
  • ¥15 C#读写EXCEL文件,不同编译
  • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符