nan*_*no7 12 java memory heap coding-style object
我有一个简单的问题.通常我会编写如下代码:
String myString = "hello";
for (int i=0, i<10; i++)
{
myString = "hello again";
}
Run Code Online (Sandbox Code Playgroud)
因为我认为以下不是好的风格,因为它会创建太多不必要的对象.
for (int i=0, i<10; i++)
{
String myString = "hello again";
}
Run Code Online (Sandbox Code Playgroud)
这甚至是正确的吗?或者这就是我有一个像我创建的类中的对象这样的显式对象的情况?如果是boolean或int怎么办?什么是更好的编码风格?在循环之前实例化它一次并在循环中使用它或者每次在循环中实例化它?为什么?因为程序更快或更少使用存储或...?
有人告诉我,如果它是一个布尔值,我应该直接在循环中实例化它.他说这对堆没有影响,而且变量属于循环内部会更清楚.什么是正确的?
谢谢你的回答!:-)
====
谢谢你的所有答案!
总之:最好在尽可能小的范围内声明一个对象.通过声明和实例化循环外的对象没有性能改进,即使在每个循环中对象都被重新实例化.
Jon*_*eet 15
不,后一个代码实际上并不有效.不过它会有括号:
for (int i=0; i<10; i++)
{
String myString = "hello again";
}
Run Code Online (Sandbox Code Playgroud)
(基本上你不能将变量声明用作if语句,循环等的单语句体)
这将毫无意义,但有效 - 并且比第一版IMO 更可取.它不需要更多的内存,但通常一个好主意是让你的局部变量尽可能缩小范围,尽可能晚地声明,理想情况下在同一点初始化.它使每个变量的使用位置更加清晰.
当然,如果你需要在循环之外(之前或之后)引用变量,那么你也需要在循环之外声明它.
在考虑效率时,需要区分变量和对象.上面的代码最多使用一个对象 - 文字"hello again"引用的String对象.
| 归档时间: |
|
| 查看次数: |
8893 次 |
| 最近记录: |