Java開發之 Java對數組的複製
定義一個數組int[] a=; int[] b=a; 數組b只是對數組a的又一個引用,即淺拷貝。
如果改變數組b中元素的值,其實是改變了數組a的元素的值,要實現深度複製,可以用clone或者System.arrayCopy int[] a=;int[] b=a.clone();b[0]=10;System.out.println(b[0]+" "+a[0]);但是clone和System.arrayCopy都是對一維數組的深度複製。 對於二維數組則不一樣:int[][] a={,};int[][] b=a.clone();b[0][0]=10;System.out.println(b[0][0]+" "+a[0][0]);輸出為10 10所以clone並不能直接作用於二維數組。 因為java中沒有二維數組的概念,只有數組的數組。所以二維數組a中存儲的實際上是兩個一維數組的引用。當調用clone函數時,是對這兩個引用進行了複製。 要證明,只需看下面的輸出int[][] a={,};int[][] b=a.clone();b[0][0]=10;System.out.println(b[0][0]+" "+a[0][0]);System.out.println(a[0]==b[0]);第5句輸出為true.用clone對二維數組進行複製,要在每一維上調用clone函數 int[][] a={,};int[][] b=new int[a.length][];for(int i=0;i
※Java編程風格與命名 規範的整理
※Java多態對象的 類型轉換
※Java學習之—多態
※寫好Java代碼的 30條經驗總結
※Java其實很簡單
TAG:java學習吧 |