1. 程式人生 > 實用技巧 >java基礎(二)

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);

  System.out.println(Arrays.toString(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]=values[j+1];
        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實現類,執行緒安全。