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()?
答案 0 :(得分:2)
在这种情况下,效果是相同的,但第一个片段中的类的实例将占用更多内存。
除了第一种情况,它是一个变量,每次调用时具有相同的地址并保留该值,但在第二种情况下,它不一定是具有相同地址的变量 - 它在每次调用时重新分配并重新初始化。
由于您实际上并未更改i
变量值,因此您应将其声明为const
- 这样可以提供更清晰的代码。
答案 1 :(得分:2)
在第一种情况下,我是对象的一部分。当你从类A创建一个对象时,该对象为变量“i”分配内存。并且它将一直保留到对象被删除。
但是在第二种方式中,当你从B类创建对象时,变量i将没有内存分配。但只有当你调用显示功能时 - 在类B-内存变量“i”才会临时分配。 (当函数完成工作时,所有局部变量都将自由)
答案 2 :(得分:0)
在第一种情况下,i
存在于任何方法之外
在第二种情况下i
仅在调用display()
方法时存在。如果你想给它持久性,可以将它声明为static
。