所以,我不知道下面的程序为什么不打印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);
}
}
你能解释一下吗?
答案 0 :(得分:6)
您声明了a
和c
静态,因此第二次调用构造函数(此处为ck nn=new ck(5,1);
)时,它会覆盖对象nnn
和{{1}的值}。因此nn
为nnn.a + nn.c
答案 1 :(得分:4)
这是一个难题吗?
原因是因为您已将变量 $request_details = $course_request->get_all_course_requests();
$request_details= collect($request_details);
$i = 0;
foreach......
和a
声明为c
,这意味着它们未附加到实例但已成为" global"类static
ck
因此,通过调用第二个构造函数,您将全局变量static int a,c;
设置为a
,将5
设置为c
,然后再打印{{1} (它与你前缀的实例无关),结果为1
。
解决方案,如果您要打印a + c
,请将以上行更改为:
5 + 1 == 6
答案 2 :(得分:0)
这是因为在java中,只为静态变量维护了一个副本。
当行ck nnn=new ck();
执行时,静态变量初始化为a = 0& C = 0。
再次,ck nn = new ck(5,1);执行,它是相同的& b如上所述,分配了新值(5& 1)。
因此,它将打印6。