首页 > 解决方案 > 为什么java程序中的这个输出打印值300

问题描述

我有以下java程序,

class A{
    int a=100;

    A(int i){

    }
    {
        a=300;
    }
    void printA(){
        System.out.println("a : "+a);
    }

}
class Demo{
    public static void main(String args[]){
        A a1=new A(200);
        a1.printA();  //300
    }
}

但我不明白为什么 main 方法 'a1.printA(); ' 作为 300 你能解释一下吗?

标签: java

解决方案


class A{
    A(int i){

    }
    int a=100;
    {
        a=300;
    }
    void printA(){
        System.out.println("a : "+a);
    }

}
class Demo{
    public static void main(String args[]){
        A a1=new A(200);
        a1.printA();  //300
    }
}

好的,您为该实例变量设置了两次值:

int a = 100;

这是第一个执行的。所以,这就是它开始的地方。

然后,你初始化你的类,所以你的初始化块将被执行,其中包含:

a=300;

这将覆盖以前的值。

您还将参数传递给您的构造函数,但您不使用它。所以这不会改变 a 的值。


推荐阅读