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