為什么執(zhí)行之后會有錯誤
package com.sean;
public class HelloWorld {
?
??? // 內(nèi)部類Inner,類Inner在類HelloWorld的內(nèi)部
??? public class Inner {
??? ?public int a=1;
??// 內(nèi)部類的方法
??? ?
??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) {
???????
??????? // 創(chuàng)建外部類對象
??HelloWorld hello = new HelloWorld();
??????? // 創(chuàng)建內(nèi)部類對象
??Inner i = hello.new Inner();
??????? // 調(diào)用內(nèi)部類對象的方法
??i.show();
?}
}
2015-09-20
這段代碼錯誤,因?yàn)檫@是一個初始化代碼塊,當(dāng)你new一個HelloWorld的時(shí)候,它會執(zhí)行這段代碼,但這段代碼里面由于有new HelloWorld(), 它就會繼續(xù)執(zhí)行初始化代碼塊,然后進(jìn)入了死循環(huán),從而造成內(nèi)存溢出。樓上說的加個static是可取的,因?yàn)閟tatic只會執(zhí)行一次,所以不會造成死循環(huán)。
解決辦法是:加一個static,或者把這段去掉。
2015-08-10
這一段會內(nèi)存溢出
每創(chuàng)建一個HelloWorld對象a,a也會創(chuàng)建一個HelloWorld對象b,b.....
你可以把上面這一段去掉或者加上static
static內(nèi)部代碼所有對象共有。具體很難解釋明白。