下面的代碼產生這樣的輸出:這個變量是如何改變的?
AAAB - > AABB - > AB | BB - > BBBB
我的目標是讓它看起來像這樣:
AAAB - > aaba - > abaa - > baaa
但是我很難弄清楚爲什麼我得到這個結果。
String abcd = 'abcd';
int l=3;
byte[] word=new byte[]{abcd[0],abcd[0],abcd[0],abcd[0]};
System.out.println(new String(word)); // print: aaaa
while (l >= 0) {
byte[] present=word; // !!!
present[l + 1 - (l - (--l))] = abcd[1];
System.out.println(new String(present)); // print: aaab -> aabb -> abbb -> bbbb
}
System.out.println(new String(word)); // print: bbbb
如果我改變了線(5):byte[] present=word;
到byte[] present=new byte[]{abcd[0],abcd[0],abcd[0],abcd[0]};
然後我得到所需的輸出。這是爲什麼發生?
什麼是'abcd'? –
'byte [] present = word;'這並不構成數組的副本 - 這會使'present'引用與'word'相同的數組。 –
我不寫:字=現在,我寫:現在=字。然後現在必須改變,而不是字。 – satiate