簡體   English   中英

Java變量的作用域和生存期

[英]Java scope and lifetime of variable

我編寫了以下程序來顯示2到50(含)之間的所有素數。 該程序按預期運行,但是當我重新檢查代碼時,我想知道為什么它沒有失敗。 if語句可以更改isprime變量的值。 但是,一旦for代碼塊{}的內部內容,就不會忘記此更改嗎? 這意味着isprime將保持為true並且將顯示所有數字。

class Prime {
    public static void main (String args []) {

    int a, b;
    boolean isprime;

    for (a = 2; a < 51; a++) {

        isprime = true;

        for (b = a-1; b > 1; b--) {

            if (a % b == 0) isprime = false;
        }

        if (isprime) System.out.println(a);
    }
}
}

好了,正如您所看到的,它不是這樣工作的:變量的作用域是聲明它的塊,包括任何子塊。

修改子塊中的變量會對其所有范圍進行修改。 每當新的塊開始時,都不會復制該變量。

1.'if'語句可以更改'isprime'變量的值

是的。內部if可以更改為isprime

2.但是,一旦保留了內部“ for”代碼塊{},就不會忘記此更改嗎?

不,它不會被遺忘。

3.這意味着isprime將保持為真,並顯示所有數字。

僅當您忘記第二個問題(第二個)時,這種情況才會發生

想一想,全局變量可以通過任何方法更改,因為它的范圍是整個程序。可以通過任何方法更改此變量。 同樣,可以在main中更改isprime ,因為它在main聲明,並且其范圍在main

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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