变量声明?

时间:2009-10-09 11:36:52

标签: variables

Case:1

    class A
    {
        private int i=0;

        public void display()
        {
            this.getValue();
        }

        private int getValue()
        {
            return i+2;
        }

    }

Case:2

    class B
    {
        public void display()
        {
            int i=0;
            this. getValue(i);
        }

        private int getValue(int i)
        {
            return i+2;
        }
    }

两种情况下“i”的声明是否都很好 每当我打电话时,差异(全局访问除外) display()?

3 个答案:

答案 0 :(得分:2)

在这种情况下,效果是相同的,但第一个片段中的类的实例将占用更多内存。

除了第一种情况,它是一个变量,每次调用时具有相同的地址并保留该值,但在第二种情况下,它不一定是具有相同地址的变量 - 它在每次调用时重新分配并重新初始化。

由于您实际上并未更改i变量值,因此您应将其声明为const - 这样可以提供更清晰的代码。

答案 1 :(得分:2)

在第一种情况下,我是对象的一部分。当你从类A创建一个对象时,该对象为变量“i”分配内存。并且它将一直保留到对象被删除。

但是在第二种方式中,当你从B类创建对象时,变量i将没有内存分配。但只有当你调用显示功能时 - 在类B-内存变量“i”才会临时分配。 (当函数完成工作时,所有局部变量都将自由)

答案 2 :(得分:0)

在第一种情况下,i存在于任何方法之外

在第二种情况下i仅在调用display()方法时存在。如果你想给它持久性,可以将它声明为static