因此,我不知道为什么下面的程序不打印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);
}
}
你能解释一下吗?
最佳答案
这是一个难题吗?
原因是因为您已将变量a
和c
声明为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/