永发信息网

关于一道初始化顺序java程序题

答案:5  悬赏:10  手机版
解决时间 2021-05-04 03:32

public class Test {
 private static Test test=new Test();//步骤1
 private static int c1;//步骤2
 private static int c2=0;//步骤3
 private Test(){//步骤4
  c1++;
  c2++;
 }
 Test get(){//步骤5  
  return test;
 }
 public static void main(String[] args) {
  Test t=new Test().get();
  System.out.println(c1);
  System.out.println(c2);
//  
 }
}
请说出他的调用的步骤和运行的结果

请说明理由,谢谢

最佳答案
因为这段代码很简单,我就从这里给你分析。  Test t=new Test().get();new Test()调用构造方法, private Test(){//步骤4
  c1++;
  c2++;
 }这时, private static int c1;//步骤2      private static int c2=0;//步骤3C1没有初始值,因为定义的是静态的,第一次的C1初始值就是0,第二个次初始值就是上次调用后的结果。因为这是第一次new了一个Test对象,所以C1++为1,C2+也为1。然后。调用get()方法。get方法里面有个return test,test是由private static Test test=new Test();出来的,因此,当然会再度使用构造方法中的两个C1++和C2++,而C1没有初始值,当让他的值就是上次得到的1。C2有初始值0,所以结果C1=2,C2=1。这道题没什么难的,主要考察的是静态单立的熟练程度。如果不懂,可以追问
全部回答
这个程序代码有问题吧,好像是错的
这样的程序是出错的

这段程序在我的角度看有问题啊。。。在主函数main中调用的c1,c2是类Test的成员变量啊,就算是static的也不能直接访问啊。。。

执行顺序:

    1、步骤 1

    2、步骤 4

    (此时c1、c2尚未初始化,默认为0。  ++之后:c1=1,c2=1)

    3、步骤 2

    (此时c1没有进行初始化,仍然为 1,c1=1)

    4、步骤 3

    (此时c2进行了初始化,由1改变为0,c2=0)

    5、执行main方法:

    (1)、执行步骤 4

    (此时c1=2、c2=1)

    (2)、执行步骤 5

所以、最后打印的结果:

    c1=2;

    c2=1;

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
有没有下载电影的网址?
快乐是什么意思,我欲成仙,快乐无边.下一句
在电影院和女朋友看什么电影好
天龙八部2怎么赚钱最快?
QQ飞车如何发车快
赛尔号游戏精灵多少钱,赛尔号游戏怎样可以获
学会计需要买哪些书籍?(0基础的)
帮忙看下这两个CPU那个好?
跪求秦红和黄力组成一首诗
汉晨路/安靖街(路口)这个地址在什么地方,我
江西三区服务器喇叭一个卖多少钱?
工作这样的情况能拿钱么
我想在南京买一台2G内存,酷睿双核,256或512的
QQ空间的积分等级有什么用?怎么可以使积分/
天龙八部这个配置为什莫会卡的不行了
推荐资讯
3G手机能不能冲Q币?要怎么冲才能冲的进?
QQ飞车里为什么女的着装要比男的高?
最近有什么新的电影好看?
16885885怎么只能办业务,冲不了QB
经常头晕,看病又看不好、该怎么办??
边疆战士辛苦的诗句,描写战士的语句
初二数学题请帮一下
有谁会SHUA QQ空间的留言,还有空间制作,会
桃花池美丽庄园(宜都店)地址在哪,我要去那里
有关于惊蛰的谚语,惊蛰古诗,关于惊蛰的古诗
厦门怎样到上海获泉州,具体点,运费什么什么
邢台学院专科专业代号
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?