Android while循环中变量的名称相同

Android while循环中变量的名称相同,android,Android,所以我的问题是 为什么以下代码抱怨变量名“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(wo

所以我的问题是

为什么以下代码抱怨变量名“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++;
}
int索引=0;
而(指数原因很简单

在第一个代码段中,所有三个变量都在同一块中定义,因此属于同一范围,这是不允许的。在块或范围中,只能定义一次变量

但在第二个代码段中,您在该循环块或作用域中只定义了一次变量。在循环的单个迭代之后,变量的作用域结束,变量的生存期结束。当新的迭代开始时,一个全新的变量被初始化


这都与变量的范围有关。你不应该认为循环意味着块内的代码将被复制多次。每次循环时,块中变量的范围结束,并开始一个新的范围。

需要注意的是变量wordView的范围在这里

下面是正在发生的情况:

  • 在第一个代码段中,变量wordView正在同一块中重新声明,这会导致错误。块中不能有同名变量
  • 在第二个代码段中,变量位于循环中。这意味着变量wordView在每次迭代结束时都会获得一个“新含义”。

  • 请阅读“变量范围”在第二种情况下,在循环的每一次迭代结束时,WordVIEW都超出了范围。当循环前进时,同一个名称的新变量返回到范围。在前面的示例中,在您尝试重新初始化之前,WordVIEW永远不会超出范围。您的问题是用这个答案来解决的吗?那么请考虑接受和接受。信息技术