我正在开发一个 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/