java裡面給物件賦值,慎用賦值符號(=) (轉)
對於來說,注意變數名類似於指標,所以請慎用賦值符號(=)!
比如下面的程式碼:
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
*/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-958151/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 給物件引用變數賦值(轉)物件變數賦值
- 物件賦值轉換物件賦值
- matlab中怎麼給符號變數賦值Matlab符號變數賦值
- 物件屬性值賦給變數物件變數
- web中,利用反射給物件賦值Web反射物件賦值
- JAVA 物件引用,以及物件賦值Java物件賦值
- php之普通變數賦值、物件賦值、引用賦值的區別PHP變數賦值物件
- Java反射給泛型集合賦值Java反射泛型賦值
- Javascript 解構賦值,將屬性/值從物件/陣列中取出,賦值給其他變數JavaScript賦值物件陣列變數
- 頁面資料賦值轉換賦值
- JavaScript 物件解構賦值JavaScript物件賦值
- 賦值運算子(轉)賦值
- vue:動態給img賦值Vue賦值
- jquery 動態給table賦值jQuery賦值
- php變數賦值給jsPHP變數賦值JS
- jQuery給控制元件賦值....jQuery控制元件賦值
- 批次給控制元件賦值控制元件賦值
- JQuery給textarea取值和賦值jQuery賦值
- 使用PreparedStatement為佔位符?賦值賦值
- 【c++】深賦值與淺賦值C++賦值
- JavaScript 等號 = 賦值運算子JavaScript賦值
- (entity bean)動態賦值值物件-- Dynamic Create Value Object 模式 (轉)Bean賦值物件Object模式
- php給$_POST賦值會導致值為空PHP賦值
- javascript怎麼給Label賦值JavaScript賦值
- JqueryautoComplete給隱藏域賦值jQuery賦值
- Verilog有符號數、無符號數之間的賦值與運算符號賦值
- 動態賦值弱型別值物件--Dynamic Create Value Object 模式 (轉)賦值型別物件Object模式
- JavaScript 之物件拷貝與賦值JavaScript物件賦值
- 變數的賦值 指標間接賦值變數賦值指標
- 常被新手忽略的值賦值和引用賦值(偏redux向)賦值Redux
- Verilog連續賦值、過程賦值、過程連續賦值總結賦值
- 複製物件重新賦值不改變原物件物件賦值
- 給numpy陣列賦同樣的值陣列
- javascript變數賦值或者重新賦值注意事項JavaScript變數賦值
- 陣列賦值陣列賦值
- 解構賦值賦值
- PLSQL Language Reference-PL/SQL語言基礎-變數賦值-使用賦值語句賦值SQL變數賦值
- Java的Monad和懶賦值Java賦值