所以我的问题是......
为什么以下代码会抱怨变量名称' wordView'被多次初始化..
int index = 0;
TextView wordView = new TextView(this);
wordView.setText(words.get(index));
rootview.addView(wordView);
index++;
TextView wordView = new TextView(this);
wordView.setText(words.get(index));
rootview.addView(wordView);
index++;
TextView wordView = new TextView(this);
wordView.setText(words.get(index));
rootview.addView(wordView);
但是这段代码没有?
int index = 0;
while(index<words.size()){
TextView wordView = new TextView(this);
wordView.setText(words.get(index));
rootview.addView(wordView);
index++;
}
它正在做同样的事情吗?
答案 0 :(得分:1)
原因很简单。
在第一个代码段中,所有三个变量都在同一个块中定义,因此范围相同,这是不允许的。在块或范围中,您只能定义一次变量。
但在第二个代码段中,您只在该循环块或范围内定义了一次变量。在循环的单次迭代之后,变量的范围结束并且变量的生命周期结束。当新的迭代开始时,初始化一个全新的变量。
这完全取决于变量的范围。您不应该认为循环意味着块中的代码将被多次复制。 循环的每次迭代,块中变量的范围结束,并开始新的范围。
答案 1 :(得分:0)
变量wordView的范围是这里要注意的。
以下是发生的事情: