因此,我不知道为什么下面的程序不打印1

class ck {
    static  int a,c;
    ck(int b, int d){
        a=b;
        c=d;
    }
    ck (){
        a=0;
        c=0;
    }
    public static void main (String[] args) {
        ck nnn=new ck();
        ck nn=new ck(5,1);

        System.out.print(nnn.a+nn.c);
    }
}


你能解释一下吗?

最佳答案

这是一个难题吗?

原因是因为您已将变量ac声明为static,这意味着它们未附加到实例,但已成为类ck范围内的“全局”变量。

static  int a,c;


因此,通过调用第二个构造函数,您可以将全局变量a设置为5并将c设置为1,然后在以后打印a + c时(在哪个实例上添加前缀并不重要),结果为5 + 1 == 6

解决方案,如果要打印1,则将上面的行更改为:

int a,c;

关于java - 无法使用构造函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35520571/

10-11 00:40