[英]Infinite memory when declaring a object of a class inside the same class
class firsttry{
public static void main(String [] args){
int a=10;
firsttry first = new firsttry();
first.calculate(a);
}
public void calculate(int b){
for(int i=0;i<10;i++){
System.out.println(b);
b+=10;
}
}
}
我已經運行了程序,它運行正常。 我想知道這怎么可能。 它不分配無限內存。 "first"
對象本身內部具有"first"
對象,依此類推。 請解釋。
main
是一個靜態方法,因此它不需要任何firsttry
類型的對象實例(即,不會創建firsttry
類型的對象)。 特別是, main
當您創建類型的新對象不叫firsttry
,所以new
的呼叫只執行一次。
如果你有new firsttry(..)
在類的構造函數firsttry
,也確實是危險,這是執行的infinite
次量。
不,這是完全正常的。 看:
您運行static main
。 您目前沒有實例。
創建firsttry
的實例,然后調用在其循環上具有結束條件的calculate
。 實例化firsttry
時,不會調用main
方法。 這不是構造函數,而是static
方法。
因此,它將運行循環然后停止。 那很正常
我不知道您到底想問什么,但我認為您在靜態方法和對象之間感到困惑。 main()
是一個靜態方法,不需要實例化。 此外,如果您對以下內容感到困惑:
firsttry first = new firsttry();
然后:
firsttry first;
是聲明,並且:
first = new firsttry();
是實例化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.