簡體   English   中英

在同一個類中聲明一個類的對象時的無限內存

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM