java - 在Java中,在循环中多次实例化一个对象是不好的做法吗?

标签 java instantiation

我正在开发一个 Java 项目,并且一个变量在 while 循环内一遍又一遍地实例化为局部变量。

while ((inputLine = in.readLine()) != null){
    Matcher matcher = pattern.matcher(inputLine);
    isFound = matcher.find();
    if(isFound){
      break;
    }
}

问题是,局部变量匹配器每次在 while 循环中都会实例化,直到循环终止。

我想知道,这会减慢处理时间吗?

最佳答案

一般来说,没有。很多时候,你需要做这样的事情。当然,您确实希望避免虚假和过多的堆栈分配,因为它们不是免费的,但在许多完美的情况下,您需要在循环内创建对象。

实例化和声明之间也有区别。在您的示例中,pattern.matcher(inputLine) 是您的对象实例化;您将仅使用该语句创建一个新的匹配器。 Matcher matcher = ... 是您的声明。如果您询问是否可以在循环中多次声明一个变量,那么这又取决于上下文。通常,这很好,而且实际上比在循环外部声明变量更可取,因为该 Matcher 的每个实例的范围(大概)应该限于循环的单次迭代。这种作用域机制可以帮助您避免以后在应用程序中出现错误。

关于java - 在Java中,在循环中多次实例化一个对象是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43921485/

相关文章:

java - EditText to double Android studio,这似乎有效但看起来不正确

java - Java 1.6 与 Neo4j 兼容吗?

c++ - 模板化类的格式错误的非模板化方法的实例化

machine-learning - 在贝叶斯网络中,节点 "instantiated"是什么意思

java - 测试实现接口(interface)的类

java - PermGen Out of Memory 原因

java - Mysql java执行更新错误

JavaFX - 对象数据到 TableView

wpf - MVVM 模型实例化

c++ - 多个文件中的模板实例化