A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© taojunqiu225 中级黑马   /  2015-8-23 23:30  /  435 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如果定义一个类中所有属性都是静态的,那是不是在主方法中通过new就只能造一个对象了?如下
class A
{
         public static int i;
}
问题1:如果就是为了让类只能造一个对象,那下面这个有什么好处?问题2:下面这个在类内部new一个自己的类,这内存是怎么分配的啊?
class A
{
public int i = 20;
private static A aa = new A();

private A()
{
}

public static A getA()  
{
return aa;
}
}

2 个回复

倒序浏览
谢谢分享
回复 使用道具 举报
对象的创建与静态属性无直接联系,唯一的联系就会造成静态属性的初始化,仅此而已。
private static A aa = new A();最好加一个final
在单线程中其实它没有啥优点,但还有点缺点,就是会使对象在类的初始化时就创建,不能实现对象构造的延迟。
在多线程中,它能够保证线程的安全性,也就是在线程还没有启动的时候他已经构造了。对象一般在堆区分配,但有的编译器的优化功能,就不一定了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马