现在做一个大的项目,内存溢出问题特别明显,特别想知道怎么才可以写出高质量的代码!我举个例子抛砖引玉!也请大家多多讨论 String str = null;
for (int i = 0; i < args.length; i++) {
str = "123";
System.out.println(str);
}
for (int i = 0; i < args.length; i++) {
String str = "123";
System.out.println(str);
}
上面两个循环哪个对质量更高?

解决方案 »

  1.   

    没什么太大的区别
    JAVA的变量又不是指针,不管你是不是在循环里建立引用,上堆里总是有新对象产生的
      

  2.   

    我现在用的是上这种,我也认为上面的这种好,
    不过刚刚看到这样一段话,我怀疑了
    10、尽量采用lazy loading 的策略,即在需要的时候才开始创建。
    例如: 
    String str = “aaa”;
    if(i == 1) {
    list.add(str);
    }
    应替换为:
    if(i == 1) {
    String str = “aaa”;
    list.add(str);
    }
      

  3.   

    习惯很重要常见的习惯用法: 循环变量:i、j、k、m、n
    数据库:conn、stmt、pstmt、rs、rowSet
    位置:pos或position
    工具类所在的包:util 不要在一个方法的中间使用“return”,“return”只能出现在一个方法的末尾。 绝不要用“continue”。 “break”只能用于switch。 最好总是在每个变量声明的时候就马上进行初始化。
    最好只在需要的时候再声明(declare)一个变量,不然的话会影响代码的执行效果。 程序中应尽可能少使用数字/字符,尽可能定义静态变量来说明该数字/字符的含义
    如果另一个程序员无法在三十秒之内了解你的函数做了什么,如何做以及为什么要这样做,那就说明你的代码是难于维护的,必须得到提高;一行代码尽量简短,并且保证一行代码只做一件事。那种看似技巧性的冗长代码只会增加代码维护的难度。不要让别人判断复杂的操作优先级。如果一个方法的代码长度超过一个屏幕,那么或许这个方法太长了;保证不必左右拉动滚动条来阅读一整行代自定义变量必须加注释;自定义的方法必须有详细的注释exit除了在main中可以被调用外,其他的地方不应该调用。main应该写在类的底部。
      

  4.   

    个人认为区别不大,因为没有涉及到动态内存分配。第一种写法str的引用只创建一次,第二种则多次创建。
    但因为这些引用都是在栈上创建的,而栈内存是即时回收的,每次循环结束,str的引用就过了生命期而不再占用内存了,所以不会造成栈溢出。栈溢出通常发生在深层递归的情况下。
    还有,第一种写法中str引用的生命期更长,它会更长时间地占用栈内存,而第二种中,str引用在循环结束后就不存在了,所以,从这个意义上说,第二种会稍微好一些。
      

  5.   

    是的,应该更多注意你使用“new”的地方。