您好,登錄后才能下訂單哦!
對(duì)于對(duì)象來說,注意變量名類似于指針,所以請(qǐng)慎用賦值符號(hào)(=)!
比如下面的代碼:
ArrayList alAll = new ArrayList();
for ( int i = 0; i < 10 ; i ++ ) {
alAll.add ( String.valueOf(i) );
}//此時(shí)alAll里面有10個(gè)元素:0-9
ArrayList alProcessing = new ArrayList();
alProcessing = alAll; //【1】這就是有問題的代碼
//alProcessing.addAll( alAll); //【2】這里是能夠達(dá)到目的的正確代碼
for ( int i = 0; i < alAll.size(); i ++ ){
if ( i % 2 == 0 ){ //是偶數(shù)就移除它
alProcessing.remove ( String.valueOf(i) );
}
}//經(jīng)過處理之后,alProcessing里面的元素應(yīng)該只剩下奇數(shù)
for ( int i = 0; i < alProcessing.size(); i ++ ){
System.out.println("第" + (i+1) + "個(gè)元素:" + alProcessing.get(i));
}
/*打開【1】關(guān)閉【2】的輸出是:(是錯(cuò)誤的)
第1個(gè)元素:1
第2個(gè)元素:3
第3個(gè)元素:5
第4個(gè)元素:7
第5個(gè)元素:8
第6個(gè)元素:9
說明:如果采用語(yǔ)句【1】,那么alProcessing和alAll指向內(nèi)存同一個(gè)區(qū)域,所以移除alProcessing里面的元素,也相當(dāng)于移除了alAll里面的元素,所以alAll.size()時(shí)刻在變,而且alAll里面的內(nèi)容也時(shí)刻在變。
而如果采用語(yǔ)句【2】就不同,alProcessing和alAll分別指向不用的區(qū)域.
*/
/*打開【2】關(guān)閉【1】的輸出是:(是正確的)
第1個(gè)元素:1
第2個(gè)元素:3
第3個(gè)元素:5
第4個(gè)元素:7
第5個(gè)元素:9
*/
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。