标题: 关于静态变量的问题 [打印本页] 作者: taojunqiu225 时间: 2015-8-23 23:30 标题: 关于静态变量的问题 如果定义一个类中所有属性都是静态的,那是不是在主方法中通过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;
}
} 作者: hejin67410 时间: 2015-9-20 22:21
谢谢分享作者: 瑞雪雄起 时间: 2015-9-20 23:16
对象的创建与静态属性无直接联系,唯一的联系就会造成静态属性的初始化,仅此而已。
private static A aa = new A();最好加一个final
在单线程中其实它没有啥优点,但还有点缺点,就是会使对象在类的初始化时就创建,不能实现对象构造的延迟。
在多线程中,它能够保证线程的安全性,也就是在线程还没有启动的时候他已经构造了。对象一般在堆区分配,但有的编译器的优化功能,就不一定了。