[英]statement always true - why?
我不知道為什么我的情況在第一次循環迭代后沒有改變,有人可以詳細說明嗎?
int x = 0;
boolean b = (x==0);
for(int i = 0; i<10; i++){
if(b){
x = 10;
System.out.print(i + " ");
} else{
x = 0;
}
}
我的 Output 是:0 1 2 3 4 5 6 7 8 9
但不應該只是每個偶數嗎? 為什么b沒有更新
您在第 2 行設置b
一次,然后再也不設置,所以它總是true
。 改變x
的值不會隱式改變b
的值
Java 中的=
賦值總是導致從右側到左側的復制*。
boolean b = (x==0);
, x
為0
。 表達式x == 0
被計算一次,結果被復制到b
中。
要在x
更改時更新b
,您需要手動覆蓋其值:
int x = 0;
boolean b = (x==0);
for (int i = 0; i < 10; i++) {
if (b) {
x = 10;
System.out.print(i + " ");
} else {
x = 0;
}
b = (x == 0);
}
* 在對象的情況下,被復制的值是 object 引用本身。 分配給的變量將是對右側引用的相同 object 的引用。
看起來你是編碼的初學者。 在這里你沒有對變量做任何事情,所以它總是正確的。 如果您只想打印偶數值,請使用以下代碼。
for(int i = 0; i<10; i++){
if(i%2 == 0){
System.out.print(i + " ");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.