簡體   English   中英

如何在循環內聲明一個新變量而不是錯誤?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM