數組是多個相同類型數據的組合,實現對這些數據的統一管理
數組屬引用類型,數組型數據是對象(Object),數組中的每一個元素至關於該對象的成員變量
數組中的元素能夠是任何數據類型,包括基本類型和引用類型java
type var[] 或 type[] var;
例如:
int a[];
int[] a1;
double b[];
Mydate []c; //對象數組
Java語言中聲明數組時不能指定其長度(數組中元素的數), 例如: int a[5]; //非法數組
Java中使用關鍵字 new 建立數組對象
定義並用運算符 new 爲之分配空間後,才能夠引用數組中的每一個元素;
數組元素的引用方式:數組名[數組元素下標]
數組元素下標能夠是整型常量或整型表達式。如a[3] , b[i] , c[6*i];
數組元素下標從0開始;長度爲n的數組合法下標取值範圍: 0 - n-1;如int a[]=new int[3]; 可引用的數組元素爲a[0]、a[1]、a[2]
每一個數組都有一個屬性 length 指明它的長度,例如:a.length 指明數組 a 的長度(元素個數)spa
數組是引用類型,它的元素至關於類的成員變量,所以數組一經分配空間,其中的每一個元素也被按照成員變量一樣的方式被隱式初始化。例如:指針
public class Test { public static void main(String argv[]){ int a[]= new int[5]; System.out.println(a[3]); //a[3]的默認值爲0 } }
Java中使用關鍵字new 建立數組對象對象
public class Test{ public static void main(String args[]){ int[] s; s = new int[10]; for ( int i=0; i<10; i++ ) { s[i] =2*i+1; System.out.println(s[i]); } } }
class MyDate{ private int day; private int month; private int year; public MyDate(int d, int m, int y){ day = d; month = m; year = y; } public void display(){ System.out.println(day + "-" + month + "-" + year); } }
public class Test{ public static void main(String args[]){ MyDate[] m; m = new MyDate[10]; for ( int i=0; i<10; i++ ) { m[i] =new MyDate(i+1, i+1,1990+i); m[i].display(); } } }
數組定義與爲數組元素分配空間並賦值的操做分開進行。blog
int a[];
a = new int[3];
a[0] = 3;
a[1] = 9;
a[2] = 8;排序
MyDate dates[];
dates = new MyDate[3];
dates[0] = new MyDate(22, 7, 1964);
dates[1] = new MyDate(1, 1, 2000);
dates[2] = new MyDate(22, 12, 1964);內存
在定義數組的同時就爲數組元素分配空間並賦值。io
int a[] = { 3, 9, 8};編譯
MyDate dates[] = {
new MyDate(22, 7, 1964),
new MyDate(1, 1, 2000),
new MyDate(22, 12, 1964)
};
package com.uncleyong; public class TestArray { public static void main(String[] args) { //1. 數組的聲明 //int i = 0; int [] a = null; //推薦使用此種方式進行聲明. int b [] = null; //注意: Java語言中聲明數組時不能指定其長度(數組中元素的數) //int [5] c = null; //注意: 若沒有爲數組變量分配指向的內存空間, 就調用其屬性, 會在運行時發生 "空指針異常" //System.out.println(a.length); //2. 爲數組分配內存空間,new後面必須指定數組長度 a = new int[10]; //3. 獲取數組的長度 System.out.println(a.length); //10 //5. 對數組元素進行初始化 for(int i = 0; i < a.length; i++){ a[i] = 100 + i; } //4. 訪問數組的元素: 數組名[數組元素下標]. 注意: 下標從 0 開始, 因此最大值是 lengh - 1, 而不是length; //數組元素會進行默認的初始化: for(int i = 0; i < a.length; i++){ System.out.println(a[i]); } //若訪問數組的下標超過合法範圍, 則在運行時會拋出 ArrayIndexOutOfBoundsException,編譯時不會拋 //a[10] = 10; //數組的靜態初始化 int [] c = {1, 2, 3, 4, 5}; int [] d = new int[]{2, 3, 4, 5, 6}; for(int i = 0; i < d.length; i++){ System.out.println(d[i]); } } }
int [][] a = {{1,2},{3,4,0,9},{5,6,7}};
Java中多維數組被作爲數組的數組處理
Java中多維數組的聲明和初始化應按從高維到低維的順序進行
int t [][] = new int [4][];//t有4行,第一個維數不空便可
t[0] = new int[5]; //每一行都是一個有5個元素的一維數組
t[1] = new int[5];
int t1[][] = new int [][4]; //非法
Java中多維數組沒必要須是規則矩陣形式
int[][] tt = new int[4][];
tt[0] = new int[2];
tt[1] = new int[4];
tt[2] = new int[6];
tt[3] = new int[8];
int tt[][] = new int[4][5]; //tt是一個4行5列的二維數組
int intArray[][] = {{1,2},{2,3},{3,4,5}};
int intArray1[3][2] = {{1,2},{2,3},{4,5}}; //illegal,等號左邊不能指定維數
int a[][] = new int[4][5];
int b[][] = new int[3][]
b[0] = new int[2];
b[1] = new int[3];
b[2] = new int[5];
package com.uncleyong; public class TestArray { public static void main(String[] args) { //聲明一個二維數組 int [][] aa = new int[5][]; //對二維數組的元素進行初始化: 二維數組的元素是一個一維數組! //遍歷須要使用嵌套的 for 循環. for(int i = 0; i < aa.length; i++){ aa[i] = new int[i + 1]; // 初始化 for(int j = 0; j < aa[i].length; j++){ aa[i][j] = 1 + i * j; } } //對二維數組進行遍歷 for(int i = 0; i < aa.length; i++){ for(int j = 0; j < aa[i].length; j++){ System.out.print(aa[i][j] + " "); } System.out.println(); } } }
Java.util.Arrays類的 sort() 方法提供了數組元素排序功能
package com.uncleyong; import java.util.Arrays; public class Sort { public static void main(String[] args) { int [] number = {5,900,1,5,77,30,64,700}; Arrays.sort(number); for(int i = 0; i < number.length; i++) System.out.print(number[i] + " "); } }