二維陣列定義方式:
//規則陣列
intarray=new int [2][3];//二維陣列定義
intarray1=,};
intarray3=new int,};
//不規則陣列
int array4 = new int[2];
array4[0] = new int[3];
array4[1] = new int[2];
二維陣列的遍歷方式:
使用for迴圈:
public
static
void
show1(int array)
system.out.println();}}
forreach
public
static
void
show2(int array)
system.out.println();}}
使用for迴圈可以通過改變下標來訪問不同的陣列元素
forreach只能按順序來訪問陣列中的每乙個元素。
int array = ,};
int array2 = new
int[2][3];
此時是把array的位址給了array2,倆者指向同一塊記憶體,所以,當其中乙個陣列的某個元素改變時,另乙個陣列的相對應元素也會發生改變。
2 for迴圈拷貝
對於基本型別
int array = ,};
int array2 = new
int[2][3];
for(int i = 0;i < array.length;i++)
}
這種拷貝是深拷貝,即把array陣列的每乙個元素都賦值給了array2陣列,其中乙個陣列改變,另乙個陣列並不會改變。
對於引用型別
testarray t1 = new testarray[2][3];
for(int i = 0;i < t1.length;i++)
}testarray t2 = new testarray[2][3];
for(int i = 0;i < t1.length;i++)
}
這種拷貝是淺拷貝,即他只是把array陣列內的位址賦給了array2陣列,倆個陣列的位址相同,即倆個陣列都指向同一塊記憶體,乙個陣列改變,另乙個自然也會改變。
3 clone拷貝
int array = ,};
int array2 = new
int[2][3];
array2 = array.clone();
show1(array);
system.out.println("*****=");
show1(array2);
array2[0][0] = 1000;
system.out.println("====改變==");
show1(array);
system.out.println("*****=");
show1(array2);
結果為
由上圖可以看出,當乙個陣列發生變化的時候,另乙個陣列也隨之改變,但是在一維陣列中並沒有出現這種情況。原因如下圖
正確的拷貝方式:
int array = ,};
int array2 = new
int[2][3];
for(int i = 0;i < array.length;i++)
這種拷貝方式是一種深拷貝。
4 arrays.copyof與 arrays.arraycopy
arrays.arraycopy
int array = ,};
int array2 = new
int[2][3];
for(int i = 0;i < array.length;i++),};
int array2 = new
int[2][3];
for(int i = 0;i < array.length;i++){
array2[i] = arrays.copyof(array[i],array[i].length);
對於基本型別的陣列,arrays.copyof與 arrays.arraycopy倆種拷貝方式,他們與clone拷貝方式一樣,必須使用for迴圈進行拷貝,不然拷貝的只是位址,並沒有拷貝到值。
與一維陣列相同clone,arrays.copyof與 arrays.arraycopy三種拷貝方式,對於基本型別的陣列都是深拷貝,而對於引用型別的陣列,他們都是淺拷貝。
對於深拷貝
對於淺拷貝
java二維陣列
定義二維陣列寫法1class numthree public static void main string args float numthree 定義乙個float型別的2維陣列 numthree new float 5 5 為它分配5行5列的空間大小 numthree 0 0 1.1f 通過下...
java二維陣列
定義二維陣列寫法1class numthree public static void main string args float numthree 定義乙個float型別的2維陣列 numthree new float 5 5 為它分配5行5列的空間大小 numthree 0 0 1.1f 通過下...
Java二維陣列
二維陣列靜態初始化 格式 陣列名 new 資料型別,一般都是定義和初始化同時進行 資料型別 陣列名 new 資料型別,例如 int arr new int,package hello public class test 利用for迴圈輸出陣列元素 for int i 0 i結果為 二維陣列動態初始化...