繁体   English   中英

为什么两次声明相同名称的TextView对象会产生错误,而在循环内声明它却不会产生错误?

[英]Why Declaring a TextView object with the same name twice create an error while Declaring it inside a loop doesn't?

对我来说,循环会一遍又一遍地重复一些指令,所以如果我的代码是这样的:

int i = 0;
while(i<3){
System.out.println("Hello world!");
}

对我来说,这意味着我写了3次相同的指令:

System.out.println("Hello world!");
System.out.println("Hello world!");
System.out.println("Hello world!");

我错了吗?

所以如果我的代码是这样的:

int i = 0 ;
while(i < 3){

TextView textView = new TextView(this);
}

对我来说,这意味着我写了3次这样的指令:

TextView textView = new TextView(this);
TextView textView = new TextView(this);
TextView textView = new TextView(this);

是不是? 当我写这段代码时

TextView textView = new TextView(this);
TextView textView = new TextView(this);

它给了我一个错误,因为我已经重复了两次相同的名称(textView),但是在这样的循环中编写相同的东西不会给我一个错误

    int i = 0 ;
while(i < 2){

TextView textView = new TextView(this);
}

即使是同一回事。 我理解事物(循环)的方式有什么问题吗?

每次循环结束,旧的TextView都会被销毁,而新的TextView会被创建。 这没问题,因为一旦循环结束,它就永远消失了。

如果仅将三个声明彼此堆叠,则它们不会被破坏,而是将这三个声明全部保留在内存中,并且两个具有相同名称的变量是非法的(出于明显的原因)。

它是关于可变范围的。 您不能在同一范围内声明相同的名称变量。

while(i < 2){
// this variable's scope is this loop. Outside this loop it is not recognized
TextView textView = new TextView(this);
}

您的代码等于什么:

while(i < 2){
  new TextView(this);
}

这不是android特定的问题,而是一般的JAVA概念

如果您定义

int a=3;
int a=3;
int a=3;

它将引发错误,但是如果您创建循环

while(i<3)
    {
        int a=3;
    }

它不会抛出错误

每当循环结束时,它都会破坏先前的对象,因此在每次迭代中都会初始化新的对象

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM