天天看點

Java學習筆記(3){數組}

1、數組的聲明

int[] array
 或
 int array[] //意義相同,不推薦
           

2、數組的初始化

2.1靜态的初始化
int[] array = {1 2 3 4 5};
int[] array = new int[] {1 2 3 4 5}; //給方法傳參數 或者 匿名數組
2.2動态的初始化
int[] array = new int[數組的長度];
2.3不初始化數組
int[] array = null; //隻是指向空,但裡面無内容
           

未初始化的數會有預設值,

不同類型預設值:

byte/short/int/long/           0
double/folat                   0.0
char                           0x0000
boolean                        false
reference                      null
           

并不是所有的都有預設值,

擁有預設值的:數組内元素、屬性、靜态屬性

沒有預設值的:局部變量、參數

3、數組的屬性

數組是引用類型屬性,是引用傳遞,改變形參,實參會感受到變化

記憶體儲存(簡單化分):

1.棧:局部變量、形參

2.堆:對象(數組的對象)

class TestIt
{
    public static void main ( String[] args )
    {
        int[] myArray = {1, 2, 3, 4, 5};
        ChangeIt.doIt( myArray );
        for(int j=0; j<myArray.length; j++)
            System.out.print( myArray[j] + " " );
    }
}
class ChangeIt
{
    static void doIt( int[] z ) 
    {
        z = null ;
    }
}
輸出是:1 2 3 4 5
這段代碼中的數組雖然是引用傳遞 ,但是将引用 z = null 隻是将引用z不指向任何對象 ,
并不會對原先指向的對象資料進行修改 。
           
class ChangeIt
{
    static void doIt( int[] z )
    {
        int[] A = z;
        A[0] = 99;
    }
}

class TestIt
{
    public static void main( String[] args )
    {
        int[] myArray = {1, 2, 3, 4, 5};
        ChangeIt.doIt(myArray);
        for (int i = 0; i < myArray.length; i++)
        {
            System.out.print(myArray[i] + " ");
        }
    }
}
輸出是:99 2 3 4 5 
引用傳遞,改變形參數組中具體的值,實參可以感受到變化
           

4、數組的處理

基本循環處理

class testarray
public static void main(String[] args){
      int[] array = {1 2 3};
      //列印所有元素
      for(int i = 0; i < array.length; i++){
            System.out.println(array[i]);
      }
      //計算所有元素的總和
      int sum = 0;
      for(int i = 0; i< array.length; i++){
            sum += array[i];
      }
      System.out.println("總和是" + sum);
      //查找最大元素
      int max = array[0];
      for(int i = 0; i < array.length; i++){
            if(max < array[i]){
                 max = array[i];
            }
      System.out.println("最大值是" + max);   
      }
}
           

for-each循環處理:

for(type element: array)
{
System.out.println(element);
}
           

執行個體代碼:

class testarray
public static void main(String[] args){
      int[] array = {1 2 3};
      //列印所有數組元素
      for(int element: array){
      System.out.println(element);   
      }
}
           

5、Arrays類

java.util.Arrays 類能友善地操作數組,它提供的所有方法都是靜态的。

具有以下功能:

給數組指派:通過 fill 方法。

對數組排序:通過 sort 方法,按升序。

比較數組:通過 equals 方法比較數組中元素值是否相等。

查找數組元素:通過 binarySearch 方法能對排序好的數組進行二分查找法操作。

Java學習筆記(3){數組}