Java中对象声明时机的疑问
本帖最后由 tianxiexingyun 于 2013-03-14 11:40:40 编辑
对于Java中对象在什么时候声明存在着一些疑问。
比如下面的两个方法:
方法一:
public void test(){
double tmp = 0;
for(int i=0; i<10000; i++){
tmp = Math.random();
System.out.println(tmp);
}
}
方法二:
public void test(){
for(int i=0; i<10000; i++){
double tmp = Math.random();
System.out.println(tmp);
}
}
这两个方法实现的功能是一样的。但是变量tmp声明的时机和次数却不一样。我经常使用方法一,以为可以减少声明变量的次数。看了一些资料后,了解到方法一占用内存的时间却比较长。有谁能够详细解释一下这两个方法的区别以及优劣处。
在这两个方法中变量都是基础类型。如果变量改成引用类型后又有什么区别。
Java?对象?内存
java
?对象
内存
------解决方案--------------------除非是对性能要求极端极端极端极端...极端严格的程序,永远建议使用第二种。当然,如果是对性能很严苛的程序,一般(如果不是全部的话)不会用Java。
上面两种差异,带来的性能上的差别,对于绝大部分应用,完全可以忽略不计。但是,前面一种写法,可能造成的Bug,确实难以承受的。
查看Effective Java: Minimize the Scope of Local Variables
------解决方案--------------------
唯一的差别就是作用域不一样,第一种在for结束了之后还能访问到