黑马程序员技术交流社区

标题: 关于静态变量的问题 [打印本页]

作者: 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
在单线程中其实它没有啥优点,但还有点缺点,就是会使对象在类的初始化时就创建,不能实现对象构造的延迟。
在多线程中,它能够保证线程的安全性,也就是在线程还没有启动的时候他已经构造了。对象一般在堆区分配,但有的编译器的优化功能,就不一定了。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2