class Circle{
double redius;
Circle c = new Circle();
public static void main(String[] args){
Circle a = new Circle();
a.redius = 2.3;
Circle b = new Circle();
b.redius = 5.5;
System.out.println("a="+a.redius+" b="+b.redius);
}
}
uj5u.com熱心網友回復:
Circle 中創建Circle ,創建實體時會陷入無限回圈創建物件,直到記憶體溢位uj5u.com熱心網友回復:
Circle c = new Circle();是Circle 中包含一個Circle c 的屬性
uj5u.com熱心網友回復:
這個類厲害了,能自己把自己玩兒死uj5u.com熱心網友回復:
有問題?你這樣寫當然會堆疊溢位,就算物件想持有同型別的物件,也不會在實體化的時候就new一個的.uj5u.com熱心網友回復:
無限回圈?可以有意思 要不然這樣寫 Circle c = null;uj5u.com熱心網友回復:
謝謝您,這個可能會一直new下去,創建物件時不是在堆記憶體開辟空間嗎,為什么會報堆疊記憶體溢位
uj5u.com熱心網友回復:
你new一個Circle物件的時候,就是再new一個Circle物件作為你的第一個物件的成員,這樣就成了無限回圈了,最后肯定會溢位的uj5u.com熱心網友回復:
因為new確實是在堆內開辟的,但是堆疊內會保存變數名稱,方法名稱等等。你的類比較簡單堆內占用的空間其實并不大,而堆疊默認大小要比堆要小很多,所以堆疊先溢位也是有可能的。
uj5u.com熱心網友回復:
class Circle{double redius;
public static void main(String[] args){
Circle a = new Circle();
a.redius = 2.3;
Circle b = new Circle();
b.redius = 5.5;
System.out.println("a="+a.redius+" b="+b.redius);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/12766.html
標籤:Java SE
上一篇:SpringBoot RestTemplate請求回傳亂碼怎么解決
下一篇:有沒有大佬做過拓撲圖相關案例?
