我是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 ++;
}
答案 0 :(得分:2)
在循环内声明变量使变量仅在循环中该实例的范围内可用。基本上,循环的每次迭代,变量都会在迭代结束时被创建并超出范围(“被遗忘”)。
答案 1 :(得分:1)
范围很重要。
在每次迭代中,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
}
被创建并以相同的迭代结束。
{{1}}
一旦范围结束,垃圾收集器就会捕获该实例,因为它不再引用它。
答案 2 :(得分:1)
您可以在循环中优雅地定义变量变量的范围仅在每次迭代之前。在每次迭代中,都会创建 TextView 类型的新对象,但
<强>记住强>
你不能在if
声明
if (index < 10) {
TextView wordView = new TextView(this);
wordView.setText(words.get(index)); // this will throw compile time error..
}