(我以 String 为例,但它可以替换为 Object > MB 的内存)
经常这样做:
private static String mTempString = "";
private static void SomeMethod()
{
mTempString = "Whatever Result";
}
现在我的问题是,如果我要这样写:
private static void SomeMethod()
{
String mTempString = "Whatever Result";
}
并在循环中使用它(例如每秒执行数百次)Java 会知道如何管理内存吗?内存力将是相同的。 (对不起,我现在不能自己测试)
哪个内存效率更高(忽略它们是小变量的事实)
--编辑--- 在这里找到一篇解释它的优秀文章 http://www.cs.berkeley.edu/~jrs/4/lec/08
最佳答案
尽可能缩小变量的范围。
这很重要有几个原因:
可读性。如果您在三个不同的地方使用具有四个不同值的变量(见图),您将很难辨别该变量的用途服务。
错误。如果将单个变量保留在一个明确指定的范围内,则可以减少应用程序中可能出现的错误数量。假设您有那个字符串,并且您希望它在两种方法中具有某种值(value),但它是完全不同的东西。
目的的意图。我在可读性部分提到了这一点,但是如果您有一个不断被重新定义的
static
变量,那么它的目的就是变得不清楚。通常,静态方法和变量可以独立于对象的状态使用,因此如果对象的状态影响静态变量的值,意图就会变得困惑。
此时我不会太担心内存效率(除非您有大量字符串,但我会说您有两件事要担心)。*
*:优化的第一条规则:不要这样做。
优化的第二条规则(仅限专家!):还不要这样做。
关于java - 我应该在重用方法外还是在重用方法内声明变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16765631/