Java數組
Java數組是java的重要數據結構,但是後面接觸List就會逐漸捨棄數組,集合和數組之間各有利弊,但是使用較多的還是集合,主要還是看具體的使用場景,下面就講下數組的知識吧。
一、數組概念
(1)數組是相同類型數據的有序集合,數組本身是引用數據類型 ,數組中的元素可以是任何數據類型,包括基本數據類型和引用數據類型。
(2)創建數組對象會在內存中開闢一整塊連續的空間,而數組名中引用的是這塊連續空間的首地址。
(3)數組的長度一旦確定,就不能修改。
(4)數組元素下標從0開始;長度爲n的數組合法下標取值範圍: 0 —>n-1;如int a[]=new int[3]; 可引用的數組元素爲a[0]、a[1]、a[2],獲取數組長度的屬性爲length。
(5)數組是引用類型,它的元素相當於類的成員變量,因此數組一經分配空間,其中的每個元素也被按照成員變量同樣的方式被隱式初始化。 例如:
注:對於基本數據類型而言,數組元素的默認初始化值各有不同。
注:對於引用數據類型而言,數組元素的默認初始化值爲null 。
二、一維數組
一維數組和二維數組是常用的數組結構,很少會用到三維以上的數組,主要是要了解數組的內存分析。
三、多維數組
四、Arrays工具類使用
java.util.Arrays類即爲操作數組的工具類,包含了用來操作數組(比如排序和搜索)的各種方法。
五、數組使用中的常見異常
附錄:數組基本操作
eg: String[] arr = new String[]{“JJ”,“DD”,“MM”,“BB”,“GG”,“AA”};
①數組複製
String[] arr1 = new String[arr.length];
for(int i = 0;i < arr1.length;i++){
arr1[i] = arr[i];
}
②數組反轉
for(int i = 0;i < arr.length / 2;i++){
String temp = arr[i];
arr[i] = arr[arr.length - i -1];
arr[arr.length - i -1] = temp;
}
③數組遍歷
for(int i = 0;i < arr.length;i++){
System.out.print(arr[i] + "\t");
}
④查找數組元素-線性查找
String dest = "BB";
dest = "CC";
boolean isFlag = true;
for(int i = 0;i < arr.length;i++){
if(dest.equals(arr[i])){
System.out.println("找到了指定的元素,位置爲:" + i);
isFlag = false;
break;
}
}
if(isFlag){
System.out.println("很遺憾,沒有找到的啦!");
}
⑤查找數組元素-二分查找法 注:數組必須有序
int[] arr2 = new int[]{-98,-34,2,34,54,66,79,105,210,333};
int dest1 = -34;
dest1 = 35;
int head = 0; //初始的首索引
int end = arr2.length - 1; //初始的末索引
boolean isFlag1 = true;
while(head <= end){
int middle = (head + end)/2;
if(dest1 == arr2[middle]){
System.out.println("找到了指定的元素,位置爲:" + middle);
isFlag1 = false;
break;
}else if(arr2[middle] > dest1){
end = middle - 1;
}else{//arr2[middle] < dest1
head = middle + 1;
}
}
if(isFlag1){
System.out.println("很遺憾,沒有找到的啦!");
}
}
}