java - 我应该在重用方法外还是在重用方法内声明变量?

标签 java

(我以 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

最佳答案

尽可能缩小变量的范围。

这很重要有几个原因:

  1. 可读性。如果您在三个不同的地方使用具有四个不同值的变量(见图),您将很难辨别该变量的用途服务。

  2. 错误。如果将单个变量保留在一个明确指定的范围内,则可以减少应用程序中可能出现的错误数量。假设您有那个字符串,并且您希望它在两种方法中具有某种值(value),但它是完全不同的东西。

  3. 目的的意图。我在可读性部分提到了这一点,但是如果您有一个不断被重新定义的 static 变量,那么它的目的就是变得不清楚。通常,静态方法和变量可以独立于对象的状态使用,因此如果对象的状态影响静态变量的值,意图就会变得困惑。

此时我不会太担心内存效率(除非您有大量字符串,但我会说您有件事要担心)。*

*:优化的第一条规则:不要这样做。
优化的第二条规则(仅限专家!):不要这样做。

关于java - 我应该在重用方法外还是在重用方法内声明变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16765631/

相关文章:

java - Spring Boot和Apache Spark安全异常:签名者不匹配

java - 尝试持久化到 SQL Server 时 Spring Boot 应用程序挂起

java - Eclipse 中的 "syso"快捷方式 - 改变了一些行为

java - 如何修复 IllegalMonitorStateException

java - 具有多值的 map

java - 在 Java 中使用递归清除一维数组?

java - Jersey 2.9 和 Jackson 提供商

java - Grouplayout有点乱

java - 如何检查 Collection 是否至少包含 google-truth 中的 N 个匹配元素?

java - Java 中 char 数组的默认值是什么?