我在一个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 = ...是您的声明。如果您要问是否可以在一个循环中多次声明一个变量,那么它又取决于上下文。通常,这很好,实际上比在循环外部声明变量更好,因为(假定)该Matcher的每个实例的范围都限于循环的单个迭代。这种作用域机制可以帮助您避免以后在应用程序中产生错误。

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

10-12 22:15