无法理解涉及静态对象的java程序输出背后的逻辑

时间:2014-09-13 09:45:41

标签: java static

我正在阅读有关静态关键字的内容。我尝试了一个涉及静态对象的程序。 输出根据概念而不同。我不明白为什么我没有输出20分。虽然a1和b1都在控制台上,但不是a20。 为什么我在输出中得到a1两次?

package j1;

class a {
    a(int i) {
       System.out.println("a"+1);
    }
}

class b {
    b(int i) {
        System.out.println("b"+1);
    }
}

class c {
    static a a1=new a(1);
    static b b1=new b(1);
    c() {
        System.out.println("c()");
    }
    static a a2=new a(20);
}

public class Static {
    public static void main(String[] args) {
        new c();
    }
}


//output:
a1
b1
a1
c()

3 个答案:

答案 0 :(得分:0)

你的构造函数是

a(int i){
    System.out.println("a"+1);
}

它只能打印“a1”,如果你想打印“a20”,你需要将参数i合并到输出中。

答案 1 :(得分:0)

也许这只是一个错字。您正在打印文字而不是参数i

System.out.println("a"+1);

那应该是

System.out.println("a"+i);

答案 2 :(得分:0)

以下代码应该有所帮助:

void a(int i) {
    System.out.println("a" + i);
}