1.一維數組的聲明
type var[];或type[] var;
java語言中聲明數組時不能指定其長度
使用new創建,數組名 = new 數組元素的類型 [數組元素的個數]
int[] s; //棧內存中創建一個s數組 s = new int[5]; //堆內存中分配5個小格,存儲int類型元素為引用數據類型的數組
注意:元素為引用數據類型的數組中的每一個元素都需要實例化
public class Date { int year; int month; int day; Date(int y,int m, int d) { year = y; month = m; day = d; }}public class Test { public static void main(String agrs[]) { Date[] days; days = new Date[3]; for (int i = 0; i < 3; i++) { days[i] = new Date(2004, 4, i + 1); } }}2.數組的初始化
動態初始化:數組的定義與為數組元素分配空間和賦值的操作分開進行,先分配空間再賦值,上例就是
靜態初始化:在定義數組的同時就為數組元素分配空間并賦值
Date days[] = {new Date(1, 4, 2004), new Date(2, 4, 2004), new Date(3, 4, 2004)};int a[] = {3, 6, 9};數組元素的默認初始化:數組是引用類型,它的元素相當于類的成員變量,因此數組分配空間后,每個元素也被按照成員變量的規則被隱式初始化,如:public class Test { public static void main(String agrs[]) { int a[] = new int[5]; Date[] days = new Date[5]; System.out.PRintln(a[3]); System.out.println(days[3]); }}結果為:0null 3.數組元素的引用
定義并用運算符new為之分配空間后,才可以引用數組中的每個元素,數組元素的引用方式為:
arrayName[數組下標]
每個數組都有一個屬性length指明它的長度,a.length的值為數組a的長度(元素個數)
4.二維數組
二維數組可以看成以數組為元素的數組。例如:
int a[][] = {{1,2},{3,4,5,6},{7,8,9}};
Jave中多維數組的聲明和初始化應按從高維到低維的順序進行
int a[][] = new int[3][]; a[0] = new int [2]; a[1] = new int[4]; a[2] = new int[2]; //合法 int t[][] = new int[][4]; //不合法5.二維數組初始化靜態初始化:int intA[][] = {{1,2},{2,3},{3,4,5}};
int
intB[3][2] ={{1,2},{2,3},{4,5}}; //非法,靜態初始化不能指定數組的行列數 動態初始化:
int a[][] = new int[3][5];int b[][] = new int[3][];b[0] = new int[2];b[1] = new int[3];b[2] = new int[5];舉例:
public static void main(String agrs[]) { String s[][] = new String[3][]; s[0] = new String[2]; s[1] = new String[3]; s[2] = new String[4]; for (int i = 0; i < s.length; i++) { for (int j = 0; j < s[i].length; j++) { s[i][j] = new String("我的位置是:" + i + "," + j); } } for (int i = 0; i < s.length; i++) { for (int j = 0; j < s[i].length; j++) { System.out.print(s[i][j] + " "); } System.out.println(); } }結果是:我的位置是:0,0
我的位置是:0,1 我的位置是:1,0 我的位置是:1,1 我的位置是:1,2 我的位置是:2,0 我的位置是:2,1 我的位置是:2,2 我的位置是:2,3 6.數組的拷貝
使用java.lang.System類的靜態方法
public static void arraycopy(Object src,int scrPos,Objectdest,int destPos,int length)
可以用于數組src從第scrPos項元素開始的length個元素拷貝到目標數組dest從destPos項開始的length個位置。
如果源數據數目超過目標數組邊界會拋出IndexOutOfBoundsExceptio
n異常。 public class TestArrayCopy { public static void main(String args[]) { String[] s = {"Mircosoft", "IBM", "Sun", "Oracle", "Apple"}; String[] sBak = new String[6]; System.arraycopy(s, 0, sBak, 0, s.length); for (int i = 0; i < sBak.length; i++) { System.out.print(sBak[i] + " "); } System.out.println(); int[][] intArray = {{1, 2}, {1, 2, 3}, {3, 4}}; int[][] intArrayBak = new int[3][]; System.arraycopy(intArray, 0, intArrayBak, 0, intArray.length); intArrayBak[2][1] = 100; //intarray與拷貝后的intarrayBak是指的同一內存,如下圖,所以同時也修改了intarray for (int i = 0; i < intArray.length; i++) { for (int j = 0; j < intArray[i].length; j++) { System.out.print(intArray[i][j] + " "); } System.out.println(); } }}結果是:Mircosoft IBM Sun Oracle Apple null1
2 1 2 3 3 100 3 100的原因如下
新聞熱點
疑難解答