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