1. Java中數組是什麼?數組是不是對象?
數組是指具有相同類型的數據的集合,它們一般具有固定的長度,並且在內存中佔據連續的空間。
在C/C++語言中,數組名只是一個指針,這個指針指向了數組的首元素,既沒有屬性也沒有方法可以調用,而在Java語言中,數組不僅有自己的屬性(例如length屬性),也有一些方法可以調用(例如clone方法)。由於對象的特點是封裝了一些數據,同時提供了一些屬性和方法,從這個角度來講,數組是對象。每個數組類型都有其對應的類型,可以通過instanceof來判斷數據的類型。
2.數組的聲明和初始化
(1)聲明方式:
一維數組兩種聲明方式:int[ ] a 或 int a[ ];
一維數組三種聲明方式:int[ ][ ] a 、 int a[ ][ ] 、int[ ] a[ ];
Java數組在聲明時,並不會給數組元素分配存儲空間,因此[ ]中不需要指定數組的長度。
(2)初始化:
一維數組 int[ ] a = new int[5]; 或 int[ ] a = {1,2,3,4,5};
二維數組 int[ ][ ] a = new int[3][2]; 或 int[ ][ ] a = {{1,2,3},{4,5}};
與C/C++不同的是,在Java中,二維數組的第二維的長度可以不同。
初始化匿名數組:new int[] {1,2,3,4,5,6}
使用這種語法形式可以在不創建新變量的情況下重新初始化一個數組。例如:
a = new int[] {1,2,3,4,5,6} 等價於 int[ ] b = {1,2,3,4,5,6} ; a = b;
Java實際上沒有多維數組,只有一維數組。多維數組被解釋爲“數組的數組”。
3. 常用函數
(1)數組轉化
數組轉換爲字符串:String toString(type[ ] a);
(2)拷貝
Arrays.clone()
System.arraycopy(Object src, int srcPos,Object dest, int destPos,int length);
Arrays.copyOf(type[ ] a, int length)
Arrays.copyOfRange(type[ ] a, int start, int end)
(3)排序
void sort(type[ ] a)
(4)查詢
int binarySearch(type[ ] a, type v)
int binarySearch(type[ ] a, int start, int end, type v)
(5)是否相等
boolean equals(type[ ] a, type[ ] b)
(6)填充
void fill(type[ ] a, type v)