一維數組
一維數組:
特點:
1.指定一種數據類型
2.指定長度
聲明:
數組類型 數組名稱[];
數組類型[] 數組名稱;
創建:
數組名稱 = new 數組類型[長度];
初始化:
數組類型 數組名稱[]={數組元素1,數組元素2,....}
數組類型 數組名稱[]=new 數組類型[]{數組元素1,數組元素2,....}
取值:
數組名稱[下標];
賦值:
數組名稱[下標] = 值;
屬性:
length:獲取數組的元素個數,即數組長度
遍歷:for循環 或 foreach遍歷
異常:下標越界,java.lang.ArrayIndexOutOfBoundsException
stack(棧):系統分配,大小限制,先進後出
一般用來存儲基本數據類型(局部變量)、與 引用類型的地址值
heap(堆):程序員控制,先進先出,當程序員使用new關鍵字時,系統將分配對應的堆內存來存儲對應的對象值
一般用來存儲引用類型的值
//聲明數組
int[] intArray;
//系統分配棧(stack)來存儲當前引用對象intArray、strArray的地址
//System.out.println(intArray.toString());
//此時intArray爲null,null無法使用任何方法
//創建數組
intArray = new int[5];
//當使用new關鍵字時,系統將分配堆(heap)內存給當前對象存儲值
//動態初始化:當數組被定義時,所有元素均有默認初始值,例如int默認值爲0
System.out.println(intArray.toString());//[I@41649a55
//初始化
//intArray = {1,2,3,4,5};
//not ok 只允許在聲明且創建的同時賦初始值
int[] intArray2 = {1,2,3,4,5};
//ok 靜態初始化,即創建數組的同時完成初始值的賦值工作
int[] intArray3 = new int[]{1,2,3};
//ok 靜態初始化,即創建數組的同時完成初始值的賦值工作
//取值
int num = intArray2[0];
System.out.println(num);
int num1 = intArray2[1];
System.out.println(num1);
int num4 = intArray2[5];
//not 長度爲5,下標爲0-4之間,下標5即爲下標越界:java.lang.ArrayIndexOutOfBoundsException
System.out.println(num4);
//賦值
intArray2[4] = 100;
System.out.println(intArray2[4]);
//數組屬性length(獲取數組的長度)
int length = intArray2.length;
System.out.println("數組的長度:" + length);
/*
* for循環遍歷取值
*/
for(int i=0;i<intArray2.length;i++)
{
int num2 = intArray2[i]; //通過下標取值
System.out.print( num2 + "\t");
}
System.out.println();
/*
* foreach循環
*/
for (int num3 : intArray2) {
System.out.print(num3 + "\t");
}
二維數組
/**
* 多維數組(以二維數組爲例):
* 聲明:
* 數組類型[][] 數組名稱;
* 數組類型 數組名稱[][];
* 數組類型[] 數組名稱[];
*
* 創建:
* 數組類型[][] 數組名稱 = new 數組類型[行數][列數];
* 數組類型[][] 數組名稱 = new 數組類型[行數][];
* 數組類型[][] 數組名稱 = new 數組類型[][列數];--------錯誤
*
* 初始化:
* 數組類型[] 數組名稱 = {1,2,3,4,5} --一維
* 數組類型[][] 數組名稱 = {
* {元素1,元素2,元素3,...},
* {元素3,元素4,元素5,...},
* {元素6,元素7,元素8,...},
* {元素9,元素10,元素11,...},
* ....
* }
* 數組類型[][] 數組名稱 = new 數組類型[][]{
* {元素1,元素2,元素3,...},
* {元素3,元素4,元素5,...},
* {元素6,元素7,元素8,...},
* {元素9,元素10,元素11,...},
* ....
* }
*
*/
//聲明
int[][] intArray;
int[][] intArray3;
int[][] intArray5;
//創建
intArray = new int[4][3];//4行3列
intArray3 = new int[5][];//5行N列
//intArray5 = new int[][4];//N行4列 ----錯誤
//初始化(四行三列的二維數組)
int[][] intArray2 = {
{1,2,3},
{4,5,6},
{7,8,9},
{10,11,12}
};
int[][] intArray4 = new int[][]{
{1},
{2,3,4},
{5,6},
{7},
{8,9}
};
/*
* 靜態賦值:方式一
*/
int[][] intArray6 = new int[3][3];
//第一行
int[] oneRow = new int[3];//等同於 int[] oneRow = new int[]{11,12,13};
oneRow[0] = 11;
oneRow[1] = 12;
oneRow[2] = 13;
intArray6[0] = oneRow;//將第一行添加到二維數組
//第二行
int[] twoRow = new int[3];//等同於 int[] twoRow = new int[]{21,22,23};
twoRow[0] = 21;
twoRow[1] = 22;
twoRow[2] = 23;
intArray6[1] = twoRow;//將第二行添加到二維數組
//第三行
int[] threeRow = new int[3];//等同於 int[] threeRow = new int[]{31,32,33};
threeRow[0] = 31;
threeRow[1] = 32;
threeRow[2] = 33;
intArray6[2] = threeRow;//將第三行添加到二維數組
/*
* 靜態賦值:方式二
*/
int[][] intArray7 = new int[3][3];
//第一行
intArray7[0][0] = 11;
intArray7[0][1] = 12;
intArray7[0][2] = 13;
//第二行
intArray7[1][0] = 21;
intArray7[1][1] = 22;
intArray7[1][2] = 23;
//第三行
intArray7[2][0] = 31;
intArray7[2][1] = 32;
intArray7[2][2] = 33;
/*
* 二維數組遍歷
*/
//遍歷行:方式一
for(int i=0;i<intArray7.length;i++)
{
//遍歷獲取每一行的數組
int[] row = intArray7[i];
//遍歷行中每列值
for(int j=0;j<row.length ; j++)
{
int column = row[j]; //-------------不同之處
System.out.print(column + "\t");
}
System.out.println();//換行
}
//遍歷行:方式二
for(int i=0;i<intArray7.length;i++)
{
//遍歷行中每列值
for(int j=0;j<intArray7[i].length ; j++)
{
int column = intArray7[i][j]; //-------------不同之處
System.out.print(column + "\t");
}
System.out.println();//換行
}