在同一个类中声明类的对象时的无限内存

时间:2014-06-05 10:22:32

标签: java class object memory

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"个对象,依此类推。请解释一下。

3 个答案:

答案 0 :(得分:4)

main是一个静态方法,因此它不需要任何类型firsttry的对象实例(即,不创建类型为firsttry的对象)。特别是,当您创建main类型的新对象时,firsttry ,因此仅new调用执行一次。

如果您在类new firsttry(..)的构造函数中有firsttry,则确实存在执行infinite次的危险。

答案 1 :(得分:0)

没有。这完全正常。看:

您运行static main。你现在没有Instance。

您创建firsttry的实例,然后调用calculate,其循环结束条件。实例化main时,不会调用firsttry方法。这不是构造函数,而是static方法。

所以,它将运行循环然后停止。这很正常。

答案 2 :(得分:0)

我不知道你想问什么,但我认为你在静态方法和对象之间感到困惑。 main()是一个静态方法,不需要实例化。此外,如果你感到困惑:

firsttry first = new firsttry();  

然后:

firsttry first;   

是声明并且:

first = new firsttry();  

是实例化。