java——陣列

中都發表於2018-04-29

1、陣列的宣告及陣列的特點

陣列是相同型別資料的集合,下面是宣告陣列的格式:

格式1:

一維陣列:
資料型別  陣列名[];
陣列名 = new 陣列型別[陣列長度];

二維陣列:
資料型別[][] 陣列名;
資料型別 陣列名[][];
資料型別[] 陣列名[] ;

格式2:

資料型別 陣列名[] = new 陣列型別[陣列長度];

陣列的以下幾個特點:

  1. 陣列中的每一個元素的資料型別都相同且必須相同
  2. 陣列中的元素長度一旦確定,就不能再改變大小
  3. 陣列中的元素可以通過下標訪問;
  4. 陣列的元素可以是陣列,從而形成二維及多維陣列。

2、陣列的初始化

1、靜態初始化
陣列的靜態初始化是指陣列在定義的同時就為陣列元素分配空間和賦值,靜態初始化不但可以指定每一個陣列元素的值,還可以指定陣列的長度。

格式1:

一維陣列:
資料型別  陣列名[]={元素值1,元素值2,元素值3,……元素值n};

二維陣列:
資料型別  陣列名[]={{第0行元素},{第1行元素}……{第n行元素}};

格式2:

一維陣列:
資料型別  陣列名[]=new 資料型別[]{元素值1,元素值2,……元素值n};

二維陣列:
資料型別  陣列名[]=new 資料型別{{第0行元素},{第1行元素}……{第n行元素}};

2、動態初始化

陣列的動態初始化是指陣列初始化時只需要指定陣列長度,由系統為這些元素賦初值。每個元素的值取陣列型別相對應的預設值:

元素型別 預設初始化值
byte 0
short 0
int 0
long 0
char ‘\u0000’
float 0.0f
double 0.0d
boolean false
引用型別(介面、類和陣列) null(空)

陣列的動態初始化:

public class ArrayDemo{
       public static void main(String[] args){
       String[] pwd=new String[3];//宣告String型陣列pwd,並且長度為3
       pwd[0]="天";//初始化pwd中的每一個元素
       pwd[1]="地";
       pwd[2]="人";
       }
  }

3、訪問陣列元素

格式:

陣列名[下標];

輸出陣列:

public class ArrayDemo{
       public static void main(String[] args){
       int[] pwd={1,6,9,8,7};
       for(int i=0;i<pwd.length;i++){//用for迴圈遍歷陣列
            System.out.print(pwd[i]+" ");
            }
     }
 }

執行結果:

1 6 9 8 7

在訪問陣列元素時要注意以下幾點:

1、下標的數值超出了下標的範圍,此時程式編譯是不會報錯的,但執行是會報錯;

2、直接輸出陣列變數名,並不能輸出陣列元素,因為陣列名是一個指向陣列的儲存地址,所以不能直接使用陣列名輸出陣列元素,這樣得到的是一個地址;

public class ArrayDemo{
       public static void main(String[] args){
       int[] pwd={1,6,9,8,7};
       System.out.print(pwd);
        }
 }

結果如圖:
這裡寫圖片描述
其含義為:

  • [I 表示該物件為一個一維陣列,二維陣列表示為[[I。
  • @11381e7,表示陣列在記憶體中的地址

4、獲取陣列的長度

java語言的陣列提供了length屬性,通過這個屬性可以得到陣列的長度:

public class ArrayDemo{
       public static void main(String[] args){
       int[] pwd={1,6,9,8,7};
       int len=pwd.length;
       System.out.print(len);
        }
 }

結果為 :

5

5、foreach語句

foreach語句可以方便的遍歷輸出陣列和集合,與for語句不同的是foreach語句遍歷陣列和集合時不需要知道陣列的長度:
foreach語法:

for(資料型別  變數名:陣列名){
                 迴圈體
           }

範例:

public class ArrayDemo{
       public static void main(String[] args){
       int[] pwd={1,6,9,8,7};
       for(int lzq:pwd){
                 System.out.print(lzq+" ");  
       }
 }

結果:

1 6 9 8 7 

6、匿名陣列

public static int sum1(int[] array) {
        int sum = 0;
        for(int i : array) {
            sum += i;
        }
        return sum;
    }

    /**
     * 可變引數程式設計
     * @param array
     * @return
     */
    public static int sum(int... array) {
        int sum = 0;
        for(int i : array) {
            sum += i;
        }
        return sum;
    }

public static void main(String[] args) {
        sum1(new int[] {1,2,5,3,8});   
        sum(new int[] {2,6,9,7,4});     //匿名陣列

    }

7、列印菱形

private static void show(int n) {
        if(n % 2 == 0) {   //只支援奇數
            return;
        }
        int mid = n/2;
        for(int i = 0;i < n;i++) {
            //列印上半部分
            if (i <= mid) {
                for (int k = i; k < mid; k++) {
                    System.out.print("\t");
                }
                for (int j = 0; j < 2 * i + 1; j++) {
                    System.out.print("*\t");
                }
                System.out.println();
            }else {  //列印下半部分
                for(int k = 0;k < i-mid;k++) {
                    System.out.print("\t");
                }
                for (int j = i; j < 2*n-i-1; j++) {
                    System.out.print("*\t");
                }
                System.out.println();
            }
        }
    }

相關文章