为了账号安全,请及时绑定邮箱和手机立即绑定

ball ball路过大佬看下关于修改了static变量后的输出结果的小小代码

class A {

static int i = 0;

int j = 1;

A(int j) {

this.j = j;

i++;

}

}

class Test {

public static void main(String[] args) {

A a1 = new A(2);

A a2 = new A(5);

System.out.println(a1.i + " " + a1.j + " " + a2.i + " " + a2.j);

}

}

为什么输出的是2 2 2 5而不是1 2 25

正在回答

2 回答

因为你输出的是最终的结果,不是按顺序输出的结果。你输出了两次i,其实都是相同的,不是说构造方法赋值不一样,然后输出的顺序也不一样。

除非在构造方法里加上输出i;这样才能看到1到2的结果!


class A {
    static int i = 0;
    int j = 1;
    A(int j) {
         this.j = j;
         i++;
         System.out.println(i);
           }
}
class Test {
        public static void main(String[] args) {
             A a1 = new A(2);
             A a2 = new A(5);
             System.out.println(a1.i + " " + a1.j + " " + a2.i + " " + a2.j);
}
}

还有就是i不用a1.i这样调用吗,本来主方法就是静态方法,静态方法可以直接输入名字调用静态变量或者静态方法。

1 回复 有任何疑惑可以回复我~
#1

搁浅的鱼x 提问者

哦哦,好的~谢啦!
2018-07-03 回复 有任何疑惑可以回复我~

i作为静态变量,可以理解为是跟类进行绑定的,也就是只要i发生了改变,那么所有该类的i都会随之发生变化,所以你在最后进行输出的时候,其实本质输出的都是A.i,这就是为什么输出的都是一个值2了

1 回复 有任何疑惑可以回复我~
#1

搁浅的鱼x 提问者

哦哦,那如果不是静态变量输出来会是2吗?
2018-07-03 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

ball ball路过大佬看下关于修改了static变量后的输出结果的小小代码

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信