之间有什么区别吗?
for (...) {
String temp = "temp";
}
和
String temp;
for (...) {
temp = "temp";
}
我的意思是,Java是否浪费了很多资源在循环中创建/删除对象?
谢谢。
答案 0 :(得分:3)
差异在于变量的范围。
定义内部循环意味着仅在循环内可见。
在循环外部定义意味着在循环内外都可见。
Java是否浪费了很多资源在循环中创建/删除对象?
如果在循环内定义,那么它将在每次迭代时重新初始化,这意味着一个额外的可执行语句。如果你想在每次迭代时重新初始化它,那么请将其移出以节省该语句的浪费cpu。
答案 1 :(得分:1)
唯一的区别是范围的问题。在for-block之外声明变量,可以在for-loop块之外访问变量(对象引用)。
如果在for循环中声明了对象引用变量,那么只能在for循环块中访问它。
答案 2 :(得分:0)
首先是两个范围变量。
Java浪费了许多资源创建/删除
Java会创建尽可能多的String
对象,因为您迭代循环的次数很多,但引用将是相同的。所以它有点资源和内存消耗。使用StringBuilder
或StringBuffer
。
答案 3 :(得分:0)
for (...)
{
String temp = "temp";
}
在这种情况下,您的温度仅适用于 For loop
String temp;
for (...)
{
temp = "temp";
}
在这里如果你在一个方法中编写这个代码,那么它将在整个方法中可用。
注意: - 局部变量在Stack中创建,并在执行该方法后删除。