本帖最后由 刘渝灵 于 2013-2-25 11:22 编辑
一个类的成分有这样一些:属性(静态和非静态的),static代码块,构造代码块,构造方法,其他方法(静态和非静态的)。当new一个这个类的对象时,基本顺序我已经了解。但是比如有这样一个类:- public class Demo {
- private Person pp = new Person();//Person类是和Demo无关的另外一个类,在声明pp变量时即创建一个Person类型变量并赋给它是自然的并且容易理解。
- private Demo p = new Demo();//这里比较特别,p是本类类型的变量。单例模式中出现过这种写法。
- //运行程序会抛出“Exception in thread "main" java.lang.StackOverflowError”,但在属性前加上static后则不会
- //static属性不是先于对象而存在的吗?也就是说此时并没有Demo对象,这个赋值是怎么进行的?static属性和非静态的有什么区别?
- //如果此时创建了一个Demo对象,那在new的时候还会再创建吗?
- {
- System.out.println("p: "+p);
- }
- public static void main(String[] args) {
- Demo d = new Demo();
- }
- }
复制代码 |
|