為什么執行之后會有錯誤
package com.sean;
public class HelloWorld {
?
??? // 內部類Inner,類Inner在類HelloWorld的內部
??? public class Inner {
??? ?public int a=1;
??// 內部類的方法
??? ?
??public void show() {
???System.out.println("welcome to imooc!"+a);
??}
?}
??? {?? HelloWorld p =new HelloWorld();
??????? Inner c=p.new Inner();
??System.out.println(c.a);
?}
?public static void main(String[] args) {
???????
??????? // 創建外部類對象
??HelloWorld hello = new HelloWorld();
??????? // 創建內部類對象
??Inner i = hello.new Inner();
??????? // 調用內部類對象的方法
??i.show();
?}
}
2015-09-20
這段代碼錯誤,因為這是一個初始化代碼塊,當你new一個HelloWorld的時候,它會執行這段代碼,但這段代碼里面由于有new HelloWorld(), 它就會繼續執行初始化代碼塊,然后進入了死循環,從而造成內存溢出。樓上說的加個static是可取的,因為static只會執行一次,所以不會造成死循環。
解決辦法是:加一個static,或者把這段去掉。
2015-08-10
這一段會內存溢出
每創建一個HelloWorld對象a,a也會創建一個HelloWorld對象b,b.....
你可以把上面這一段去掉或者加上static
static內部代碼所有對象共有。具體很難解釋明白。