Java:在循环中声明对象

时间:2014-01-09 12:34:48

标签: java loops object reference

之间有什么区别吗?
for (...) {
  String temp = "temp";
}

String temp;
for (...) {
  temp = "temp";
}

我的意思是,Java是否浪费了很多资源在循环中创建/删除对象?

谢谢。

4 个答案:

答案 0 :(得分:3)

差异在于变量的范围

  • 定义内部循环意味着仅在循环内可见。

  • 在循环外部定义意味着在循环内外都可见。

  

Java是否浪费了很多资源在循环中创建/删除对象?

如果在循环内定义,那么它将在每次迭代时重新初始化,这意味着一个额外的可执行语句。如果你想在每次迭代时重新初始化它,那么请将其移出以节省该语句的浪费cpu。

答案 1 :(得分:1)

唯一的区别是范围的问题。在for-block之外声明变量,可以在for-loop块之外访问变量(对象引用)。​​

如果在for循环中声明了对象引用变量,那么只能在for循环块中访问它。

答案 2 :(得分:0)

首先是两个范围变量。

  1. 循环内部的定义仅对循环可见。
  2. 循环外部的定义将在循环内部和外部可见
  3. Java浪费了许多资源创建/删除

    Java会创建尽可能多的String对象,因为您迭代循环的次数很多,但引用将是相同的。所以它有点资源和内存消耗。使用StringBuilderStringBuffer

答案 3 :(得分:0)

for (...) 

{

String temp = "temp";

}

在这种情况下,您的温度仅适用于 For loop

String temp;

for (...)

 {

  temp = "temp";

}

在这里如果你在一个方法中编写这个代码,那么它将在整个方法中可用。

注意: - 局部变量在Stack中创建,并在执行该方法后删除。