如何在循环内声明一个新变量而不是错误?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在循环内声明一个新变量而不是错误?相关的知识,希望对你有一定的参考价值。
我是android的新手,目前正在学习基础知识。下面的代码用于显示数字列表(1-10)。我想了解为什么代码在android studio中没有错误运行,它实际上显示了列表。从我看到的,我们多次声明变量wordView而不更改变量名称。我们每次更新相同的WordView变量吗?如果是这样,我怎么得到一个清单?
LinearLayout rootView = (LinearLayout) findViewById(R.id.rootView);
int index = 0;
while (index < 10) {
TextView wordView = new TextView(this);
wordView.setText(words.get(index));
rootView.addView(wordView);
index ++;
}
答案
在循环内声明变量使变量仅在循环中该实例的范围内可用。基本上,循环的每次迭代,变量都会在迭代结束时创建并超出范围(被“遗忘”)。
另一答案
范围很重要。
在每次迭代中,Object
的新TextView
被创建并在相同的迭代中死亡,因为范围在同一次迭代中结束。
while (index < 10) {
TextView wordView = new TextView(this);
wordView.setText(words.get(index));
rootView.addView(wordView);
index ++;
}
变量wordView
被创建并以相同的迭代结束。
while (index < 10) {
TextView wordView = new TextView(this); // created
wordView.setText(words.get(index));
rootView.addView(wordView);
index ++;
// died here
}
一旦范围结束,垃圾收集器就会捕获该实例,因为它不再引用它。
另一答案
您可以在循环内优雅地定义变量,变量的范围仅在每次迭代之前。在每次迭代中,都会创建一个TextView类型的新对象
记得
你不能在if
声明中声明一个变量
if (index < 10) {
TextView wordView = new TextView(this);
wordView.setText(words.get(index)); // this will throw compile time error..
}
以上是关于如何在循环内声明一个新变量而不是错误?的主要内容,如果未能解决你的问题,请参考以下文章