`
aaronwong_best
  • 浏览: 43653 次
  • 性别: Icon_minigender_2
  • 来自: 彩虹天堂
最近访客 更多访客>>
社区版块
存档分类
最新评论

我十分以及非常特别的想知道

阅读更多
public class MainTest {
public static void main(String[] args) {
Singleton obj = Singleton.getInstance();
System.out.println("obj.counter1==" + obj.counter1);
System.out.println("obj.counter2==" + obj.counter2);
}
}

class Singleton {

public static int counter1;
public static int counter2 = 0;
private static Singleton obj = new Singleton();
private Singleton() {
counter1++;
counter2++;
}

public static Singleton getInstance() {
return obj;
}
}
他的结果的1和1
public class MainTest {
public static void main(String[] args) {
Singleton obj = Singleton.getInstance();
System.out.println("obj.counter1==" + obj.counter1);
System.out.println("obj.counter2==" + obj.counter2);
}
}

class Singleton {
private static Singleton obj = new Singleton();
public static int counter1;
public static int counter2 = 0;

private Singleton() {
counter1++;
counter2++;
}

public static Singleton getInstance() {
return obj;
}
}
而他的结果是1和0,为什么counter2++没有++;
他们的结果为什么是那样啊???
分享到:
评论
3 楼 cantellow 2009-03-29  
在main函数里调用Singleton 的静态方法时
虚拟机只加载Singleton 类并初始化其中的静态字段,但是并不分配空间创建此类的对象。
public static int counter1;
public static int counter2 = 0;
private static Singleton obj = new Singleton();
执行了静态变量counter1,counter2初始化后,遇到new Singleton() 指令,然后虚拟机又开始检查Singleton 是否被加载,检查得知没有完全被加载,虚拟机从新开始加载,遇到public static int counter1; public static int counter2 = 0;跳过,当加载之后开始分配空间创建对象,所以在执行counter1++; counter2++; 之前,他们两个的值都是0,固为1,1。

而第二种:
private static Singleton obj = new Singleton();
public static int counter1;
public static int counter2 = 0;
虚拟机执行new Singleton(前面和第一种一样)时,首先也检查Singleton类是否被加载,发现没有被加载,所以继续加载,之后开始分配空间创建对象,并执行counter1++; counter2++; 。这个时候counter1和counter2都为1,但是private static Singleton obj = new Singleton(); 语句结束之后,前面加载此类的方法调用还在继续,所以会继续执行
public static int counter1;
public static int counter2 = 0;
所以,counter2 被重新赋值为0.
2 楼 aaronwong_best 2008-12-29  
同意楼上的,我也已经想到了是这个原因
1 楼 wangxuliangboy 2008-12-28  
看看JAVA初始化顺序吧。。
1.private static Singleton obj = new Singleton();
在作这一步的时候会调用
private Singleton() {
counter1++;
counter2++;
}
2.public static int counter1;
没有给它重新赋值,所以它就是1.。
3.public static int counter2 = 0;
本来counter2的值为1的,但是你在这里又重新赋值啦。所以它又变成了0

相关推荐

    我想知道 PPT(冀教版 )PPT课件.PPT

    在当今以学生为中心的教学模式下,冀教版小学一年级上册语文课程的PPT课件“我想知道”利用了现代教育技术,创新地设计了教学内容和形式,充分调动了孩子们的积极性,激发了他们的好奇心和求知欲。本课件不仅包含了...

    一年级语文上册 我想知道 1教案 冀教版 教案.doc

    冀教版一年级语文上册的教案“我想知道”正是这样一个旨在通过诗歌教学,激发学生对语文学习热情的教学方案。这篇教案精心设计了两个课时的教学活动,不仅让孩子们理解诗歌内容,更通过各种教学手段,培养孩子们的...

    一个非常浪漫的小小的表白程序

    在这个特别的时刻,我想对你说一些特别的话。我希望你知道,你对我来说非常重要。你的笑容让我心跳加速,你的温柔让我感到安慰。我一直想告诉你,我对你的感情是真实的,深深地爱着你。 我想和你一起创造美好的回忆...

    一年级小学生母亲节演讲稿:妈妈,我想对你说.doc

    在这特别的日子里,我想用歌声表达我对您的感激。我希望您能听到我的心声,感受到我的爱。妈妈,您就像一首温柔的歌,唱进我的心窝,让我觉得世界如此美好。 我想送您一个小熊,虽然它不能代表我对您的爱,但是它能...

    最新整理冀教版一年级语文上册《我想知道》教学设计.pdf

    这篇教学设计针对的是冀教版一年级语文上册的《我想知道》一课,是一份详尽的教学方案,旨在帮助学生掌握基本的语文知识和技能,培养他们的观察力和思考习惯。 1. 教学目标: - 生字识读:教学目标之一是让学生...

    我知道的widget~

    总的来说,“我知道的widget~”这篇博客很可能会深入探讨Android Widget的开发技术,特别是关于时间显示和更新的细节,对于想要学习或改进时间类Widget的开发者来说,是一份宝贵的资源。通过阅读博客和分析提供的...

    演讲:初一同学,我想对你说参考演讲稿.doc

    特别是对于我们初一的新同学来说,今天,我想对你们说,这是你们人生中一个非常重要的时刻,因为你们正站在中学生活的起跑线上,准备迎接一系列新的挑战和机遇。 秋天,是一个收获与希望并存的季节。在这个美好的...

    爸爸,我想对您说作文.doc

    在这个数字化日益发达的时代,我想对您说,我理解您为了家庭所付出的努力,也感受到您对我们生活质量的关心。我写下这封信,是希望我们能够共同探讨和理解彼此在现代生活中的一些行为和习惯,尤其是互联网使用对我们...

    Blade IDS Informer特别版

    4. **readme.txt**:这是一个标准的文本文件,通常包含开发者想要用户知道的重要信息,如软件版本、更改日志、系统要求或兼容性等。对于Blade IDS Informer特别版,readme.txt可能详细说明了与标准版的不同之处。 5...

    我的好朋友周玮作文.doc

    周玮知道后,他不仅帮我找作业本,还帮我补上了作业。这件事让我十分感动,他真的是一个可以信赖的朋友。 然而,我们的友谊也面临着挑战。在我即将升入一年级的时候,周玮一家搬到了北京。虽然我们通过书信保持联系...

    Python图书推荐系统,后端使用python框架Django,调度任务的基于python调度框架APScheduler

    有时候我看到一本好书,然后就会想要找跟他类型相同(内容相似)的书,这个时候就需要同类型图书推荐系统,比如图书馆关于shader方面的书很少,这个时候我看到一本关于shader的书,就会特别想知道跟这本书相似的有...

    《[十二岁生日演讲稿简短]10岁生日的演讲稿》.doc

    今天是我10岁的生日,是属于我的特别日子,但这个日子不仅仅是我的,它也是我们大家的。在这个美妙的时刻,我想对你们说一声,谢谢。 首先,我要感谢我的爸爸妈妈。在我成长的道路上,你们是我最坚实的依靠。每当我...

    你想知道的硬件知识_电容篇1.doc

    然而,它们也有明显的缺点,包括漏电流大、损耗因子高、温度和频率特性不佳,以及容易受到环境影响导致性能退化。此外,铝电解电容体积较大,对于小型化电路设计不是最佳选择。 其次,钽电容因优异的稳定性、耐高温...

    想知道别人什么时候启动你电脑和用了多久吗?

    标题 "想知道别人什么时候启动你电脑和用了多久吗?" 暗示了我们正在讨论一个与计算机监控和审计相关的主题,特别是关注系统启动时间和使用时长。在IT领域,这样的功能通常涉及到系统日志记录、审计跟踪以及可能的...

    我为姥姥捶肩作文.doc

    在我的文章中,老师就特别指出了我描述捶肩力度的细节,以及通过对话和表情来展现情感交流的方式,这些都对我的写作技巧有着极大的帮助。 文章的结构设计也是其吸引读者的关键。从起因(做完作业没事做),到行动...

    教师演讲稿:我就是一个普通的“先生”

    我知道,我的力量是有限的,但我会尽我最大的努力,让每一个孩子都能在学习中找到自信,找到快乐。 各位同事,同学们,教育是一项伟大的事业,需要我们共同的努力和智慧。让我们携手并进,为了孩子们的未来,为了...

    高中单招面试自我介绍范文精选.doc

    首先,我想说,我是一个非常注重礼貌和尊重的人。正如我此刻的开场白,虽然简单,却能体现我对这次面试的重视。我的个性特点是细心而又乐于助人。在学习和生活中,我总是尽力帮助身边需要帮助的人,我也因此收获了...

    跟我一起写Makefile-陈皓.rar

    或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个...

    想知道这个文件怎么样调用

    在这个场景中,用户特别关注如何调用一个名为“playswf.swf”的SWF(ShockWave Flash)文件。SWF文件是Adobe Flash平台用于存储动画、交互式内容或应用程序的格式,通常在网络浏览器中播放。以下将详细介绍如何在...

Global site tag (gtag.js) - Google Analytics