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