首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

Java中对象宣言时机的疑问

2013-03-22 
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
[解决办法]
引用:
并没有什么差别,java调用一个方法前,所有局部变量的内存都已经分配好了,即使写在for里面那个变量也会多次重用,并不存在多次开辟内存空间这种其它某些语言才干的事儿


唯一的差别就是作用域不一样,第一种在for结束了之后还能访问到

热点排行