Java 數組總結

一、數組的基礎知識

1、數組:一個存儲具有相同類型的變量集合

2、聲明數組變量的語法

elementType[ ] arrayRefVar (元素類型[ ]  數組引用變量 ;)

elementType arrayRefVar]  (元素類型數組引用變量[ ])  ,多用於C/C++

注:elementType 可以是任意數據類型但是數組中所有的元素都必須具有相同的數據類型。
 
3、創建數組變量的語法:
 
(1)elementType [ ] arrayRefVar  =  new elementType[arraySize];
      (元素類型 [  ]    數組引用變量 new 元素類型[ 數組大小] ;)
 
(2)elementType arrayRefVar]  =  new elementType[arraySize];
     (元素類型      數組引用變量 =  new 元素類型   [ 數組大小];)
 
舉例:double[ ] myList   new double[10];
這條語句聲明瞭數組變量 myList, 創建一個由 10 double 型元素構成的數組並將該數組的引用賦值給 myList,
使用以下語法給這些元素賦值:arrayRefVar [index] = value;
 
注:聲明一個數組變量時並不在內存中給數組分配任何空間。它只是創建一個對數組的引用的存儲位置如果變量不包含對數組的引用那麼這個變量的值爲 null除非數組已經被創建否則不能給它分配任何元素
 
初始化數組(圖)
 
 
 
 
 
4、數組的大小:使用 arrayRefVar.length 得到數組的大小(當給數組分配空間時,必須指定該數組能夠存儲的元素個數,從而確定數組大小。創建數組之後就不能再修改它的大小)

5、數組的默認值:
 
  • 整數類型默認0
  • 浮點類型默認0.0
  • 布爾類型默認false
  • 引用數據類型(對象)默認null
  • char 型默認爲 '\u0000'

6、數組初始化語法:

  • 數據類型[] 數組名=new 數據類型[長度]; 創建數組只指定長度但不指定內容
  • 數據類型[] 數組名=new 數據類型[長度]; 創建數組只指定長度但不指定內容
  • 數據類型[] 數組名={1,2,3,4,5}; 創建數組指定內容(指定長度)
 

7、訪問數組元素:

數組元素可以通過下標訪問數組下標是基於0的,範圍爲[ 0,arrayRefVar.length - 1 ]
 
語法表示:arrayRefVar[index]; (數組引用交量 下標 ];)

 

二、foreach循環

 
1、foreach循環:不使用下標變量就可以順序地遍歷整個數組。
 
2、foreach循環的語法:
 
for (elementType element : arrayRefVar) {
 
II Process the element
 
}
舉例:
for (double e: myList) {
System.out .println(e);
}
此代碼可以讀作 myList 中每個元素 e 進行以下操作注意變量 e 必須聲明爲與
myList 中元素相同的數據類型
 
 

三、複製數組

將數組 list 1 的內容複製給數組list 2 ,我們第一反應就是 
 
list 2 = list 1 ;
 
但該語句不能將list 1 引用的數組內容複製給 list2 ,而是將list1 的引用值複製給了list2 。這條語句執行後,list1 和 list2 都指向同一個數組,如下圖。list 2 原先所引用的數組將不能在引用,他就會變成垃圾,被 Java虛擬機自動回收。

複製數組的方法:

  • 使用循環語句逐個的複製數組的元素
  • 使用System類中的靜態方法arraycopy
  • 使用clone方法複製數組
示例:將 sourceArray 複製到  targetArray
 
for循環:
 
int [ ]  sourceArray = {1,2,3,4,5};
int [ ]  targetArray = new  sourceArray[ sourceArray.length ];
for (int i = 1; i< sourceArray.length ; i ++){
      targetArray [ i ] =  sourceArray [ i ];
}
 
java.util.System類中的arraycopy方法
 
arraycopy語法:arraycopy ( sourceArray , srcPos ,  targetArray ,  tarPos , length );
 
其中參數 srcPos和tarPos分別表示在源數組sourceArray和目標數組targetArray 中的起始位置。從sourceArray複製到targetArray中的元素個數由參數length指定。
arraycopy方法沒有給目標數組分配內存空間。複製前必須創建目標數組以及分配給它的內存空間。複製完後,sourceArray和targetArray具有相同的內容,但佔有獨立的內存空間。
 
示例 System.arraycopy ( sourceArray ,0 ,  targetArray , 0 , length );
 
 
注:arraycopy 方法違背了 Java命名習慣。根據命名習慣,該方法應命名爲arrayCopy.


四、數組常見錯誤


    ArrayIndexOutOfBoundsException  數組角標越界

 
public void test01(){
        int[] arr = {1,2,3,4,5,6};
        //ArrayIndexOutOfBoundsException,數組越界
        System.out.println(arr[6]);//訪問了不存在的索引
    }


    NullPointerException  空指針異常

public void test1(){
        int[] arr = {1,2,3,4,5,6,};
        arr = null; 
        //NullPointerException
        System.out.println(arr[0]);//數組已經不指向堆內存了,空指針異常
    }

 

五、基本數組操作

  •     遍歷

public static void bianli(){
        int[] arr={1,2,3,4,5,6,7,8,9};//[0,8]
        //數組只有一個唯一的屬性 length 數組的長度
        System.out.println(arr.length);
        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
    }

 

  •     賦值

public static void fuzhi(){
        Scanner scanner=new Scanner(System.in);
        // System.out.print("請輸入10個數字:");
        int[] arr2=new int[10];
        for(int i=0;i<arr2.length;i++){
            System.out.print("請輸入1個數字:");
            arr2[i]=scanner.nextInt();
        }
        for(int i=0;i<arr2.length;i++){
            System.out.print(arr2[i]+" ");
        }
    }

 

  •     求最大值/最小值

public static void maxormin(){
        //計算最大值或最小值的 值
        //計算最大值或最小值的 角標
        //需求 獲取最大的值10 獲取最小值的角標4
        int[] arr={10,2,8,3,1,6,4,7,9,5};
        int max=arr[0];
        int min_index=0;
        for(int i=0;i<arr.length;i++){
            if(arr[i]>max){
                max=arr[i];
            }
            if(arr[i]<arr[min_index]){
                min_index=i;
            }
        }
        System.out.println("最大值"+max);
        System.out.println("最小值角標"+min_index);

    }

 

 

 

 

 

 

 

 

 

發佈了16 篇原創文章 · 獲贊 25 · 訪問量 3144
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章