定义一个成员变量时,成员变量将被放置到内存中,如果成员变量的作用域扩大到类存在的范围或者对象存在范围,坏处有:增大了变量的生存时间,这将导致更大的系统开销;扩大了变量的作用域,不利于提高程序的内聚性。
public class TestScope1
{
//定义一个成员变量做为循环变量
static int i;
public static void main(String[] args)
{
for(i=0;i<10;i++)
{
System.out.printfn("hi");
}
}
}
public class TestScope2
{
public static void main(String[] args)
{
//定义一个方法局部变量做微循环变量
int i;
for(i=0;i<10;i++)
{
System.out.printfn("hi");
}
}
}
public class TestScope3
{
public static void main(String args)
{
//定义一个代码局部变量做为循环变量
for(int i=0;i<10;i++)
{
System.out.printfn("hi");
}
}
}
上面三个结果一样,但效果大不一样,第三个最符合软件开发规则。
下面情况考虑使用成员变量:
1:变量用于描述某个类或者某个对象的固有信息,如人的身高、体重。应定义为成员变量的实例属性。如果对这个类的所有实例完全相同或者是类相关的如人类眼睛数目,定义为类属性
2:如果在某个类中需要以一个变量来保存该类或者实例运行时的状态信息,如五子棋程序中的棋盘数组,用以保存五子棋实例运行时的状态信息。这种用于保存某个类,或者某个实例状态信息变量通常使用成员变量
3:如果某个信息需要在某个类的多个方法之间进行共享,则这个信息应该使用成员变量来保存。
即使在程序中使用的变量,也应该近可能地缩小局部变量的作用范围,局部变量的作用范围越小它在内存里停留的时间就越短,性能就越好。顾能用代码块局部变量的地方就坚持不用方法局部变量。