成员变量和局部变量

很多时候,我们在设计时总是遇到一些问题,变量是采用局部变量还是成员变量呢?
我个人是有这个想法的:
1、用成员变量的原则是,该变量必需被多个方法共用,并且这些方法间的确需要共用这些变量实现数据共享。典型的是交换问题,我这里举个其它例子,如下
public class FileUtil {
    private File file = null;
   
    public void createFile(String fileName) {
     file = new File(fileName);
     ……
    }
   
    public void deleteFile() {
     file.delete();
     ……
    }
}

2、不要因为每个方法中都用到某个类型的变量,就干脆把它定义为一个成员变量。但是这个变量到了每个方法中都会重新被赋值,没有一个方法需要该变量过去的值,
不存在共享数据的问题,这样写获得的唯一好处就是每个方法里面你可以省略掉一个实例/类型声明罢了,从代码的角度看也不见得简约,一行就多几个字,原本多
少行还是需要多少行。举例,下面的是我不建议的写法:
public class FileUtil {
    private File file = null;
   
    public void createFile(String fileName) {
     file = new File(fileName);
     ……
    }
   
    public void deleteFile(String fileName) {
     file = new File(String fileName);
     ……
    }
}
既然这样,干什么不写成:
public class FileUtil {

    public void createFile(String fileName) {
     File file = new File(fileName);
     ……
    }
   
    public void deleteFile(String fileName) {
     File file = new File(String fileName);
     ……
    }
}
毕竟这样可以使File变量的声明周期更短,提前对无用的垃圾进行回收,当然你也可以采取第一个,然后在每个方法后面写上补上file = null;这只是个人习惯问题罢了。有时候有些人
想说,这个差什么,就是是成员变量,过不久也回收的。的确这样,我不驳斥这个观点,但是很多时候,硬件是足够支撑的,但是很多人还是去做一些优化,很多事情就是这样,有人最求能做
到更好,而且这也是当初SUN设计的初衷吧。

3、还有另外一种情况,有时候如果少了这个成员变量后好像那个方法就要设计得很复杂,但是如果是这样的话,就说明你的那个变量复合第一中情况,这时候就要根据实际情况自己选择了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值