Java中对象宣言时机的疑问
Java中对象声明时机的疑问本帖最后由 tianxiexingyun 于 2013-03-14 11:40:40 编辑对于Java中对象在什么时
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结束了之后还能访问到