[英]How is declaring a new variable inside a loop NOT giving errors?
我是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 ++;
}
在循環內聲明變量使變量僅在循環中該實例的范圍內可用。 基本上,循環的每次迭代,變量都會在迭代結束時創建並超出范圍(被“遺忘”)。
范圍很重要。
在每次迭代中,都會創建一個新的TextView
Object
,並在同一次迭代中以范圍結束的相同迭代中死亡。
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
}
一旦范圍結束,垃圾收集器就會捕獲該實例,因為它不再引用它。
您可以在循環內優雅地定義變量,變量的范圍僅在每次迭代之前。 在每次迭代中,都會創建一個TextView類型的新對象
記得
你不能在if
語句中聲明一個變量
if (index < 10) {
TextView wordView = new TextView(this);
wordView.setText(words.get(index)); // this will throw compile time error..
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.