java基礎(二)
陣列
陣列是相同型別資料的有序集合,陣列描述的是相同資料的若干個資料,按照一定的先後次序排列而成,其中,每一個數據都是一個元素,可以通過下標訪問,陣列預設的下標是從零開始。
陣列的基本特點:
陣列的長度是確定的,陣列一旦被建立,陣列的長度也會隨之確定,陣列的長度是不可變的。
其中的元素必須是統一型別,是int全都是int,不允許出現其他型別,
陣列的型別可以是任意型別,包括8大基本資料型別和引用型別
宣告一個數組:int []=null; int [] =new [10]; int []={1,2,3,}
其實java中並不存在所謂的多維陣列,只有一維陣列,多維陣列有叫做“陣列中的陣列”,這也是java的優勢所在.
陣列的常用方法:
1.copyOfRange (Object[]obj, intfrom, intto):將指定陣列的範圍複製到一個新陣列
2.hashCode(Object[]a):將指定的陣列返回雜湊碼
3.Arrays.sort(a):陣列排序
4.Arrays.file(陣列,A,B,C);將陣列A到B索引的元素替換為C
氣泡排序法:
public class Test{
public static void main(String[] args){
int[] values={2,1,0,5,9,7,6,3,15,21};
sort(values);
}
public static void sort(int[] values){
int temp;
for(int i=0;i<values.length;i++){
for(int j=0;j<values.length-1-i;j++){
if(values[j]>values[j+1]){
temp=values[j];
values[j+1]=temp;
}
}
}
}
}
//從小到到達排序,會先將最大的找出來,放到最後;從大到小排列,會先將最小的找出來放放到最後
//第一次完全把陣列遍歷一次,把最小的找出來了,再遍歷一次會把比最小的大一個的數找出來,以此類推。
在平常的開發中一般會將陣列轉換為集合,因為陣列一旦建立,就不可以再修改.
在圖中所有的節點都是實現類,其他都是介面,繼承了父介面.
collection介面存在兩個子介面,一個是list,一個是set。list介面是有序的,而且允許資料重複,set介面是無須,也不允許 資料重複.
list有3個實現類,分別是Arraylist,linkedlist,vector這3個實現類,此藉口使用者可以對插入的元素準確的控制,使用者可以根劇元素的整數索引去訪問元素.list介面在iterator,add,remove,equals和hashcode的方法上加了一些其他的約定超過了collection介面中指定的約定.
Arraylist:是java集合中常用的資料結構,繼承自Abstractlist,實現了list介面,底層基於陣列實現容量大小動態變化,允許null的存在,同時還實現了RandomAccess,Cloneable,Serializable介面,所以Arraylist是支援快速訪問,複製和序列化的.
Arraylist的底層是基於陣列來實現容量大小動態變化的.
上面的size是指elementData中實際有多少個元素,elementData.length為集合容量,表示可以容納多少個元素.預設初始容量大小為10.
transient
java語言的關鍵字,變數修飾符,如果用transient宣告一個例項變數,當物件儲存時,它的值不需要維持。Java的serialization提供了一種持久化物件例項的機制。當持久化物件時,可能有一個特殊的物件資料 成員,我們不想用serialization機制來儲存它。為了在一個特定物件的一個域上關閉serialization,可以在這個域前加上關鍵字 transient。當一個物件被序列化的時候,transient型變數的值不包括在序列化的表示中,然而非transient型的變數是被包括進去的
private transsient int modCount=0;
這個變數是定義在Abstractlist中的,記錄對list操作的次數。主要使用在iterator,是防止在迭代的過程中集合被修改.
set介面:
顧名思義,就是集合的意思,java的集合和數學的集合一樣,滿足集合的無序性,確定性,單一性,所以可以很好的理解,set是無序的,不可重複的,set只允許存在一個null;
set就相當於一個罐子,丟進的set元素沒有先後的差別。
set判斷兩個元素相同用的不是“==”,而是根據equals方法,
Map介面:
map介面不是collection的子介面或者實現類,map是一個介面;
Map用於儲存對映關係的資料,每個entry都持有鍵----值兩個物件,在Map中,value可能會重複,但是鍵不允許重複;
map中可以存在多個value為空,但是隻允許一個鍵為空
map的子介面;
1.hashmap:和hashset不能儲存元素的順序一樣,hashmap也不能保證鍵--值對的順序,通過hashMap的值.equals進行比較,同時兩個key的hashcode值也必須相等;
2.hashTable:一個古老的map實現類,執行緒安全。