[英]why is declaring inside for loop works but declaring outside for loop as global variable won't work
[英]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.