1. 程式人生 > 實用技巧 >java陣列相關

java陣列相關

陣列


陣列概述

  • 陣列是相同型別資料的有序集合
  • 陣列描述的是相同型別的若干個資料,按照一定的先後次序排列組合而成。
  • 其中每一個數據稱作一個數組元素,每個陣列元素可以通過下一個下標來訪問它們

陣列宣告建立

  • 首先必須宣告陣列變數,才能在程式中使用陣列
  • java語言使用new操作符來建立陣列
  • 陣列的元素是通過索引訪問的,陣列索引從0開始
  • 獲取陣列長度用 arrays.lenth()方法
         // 變數的型別  變數的名字 =變數的值
        // 陣列型別

        int[] nums; // 宣告一個數組
        nums= new int[10];  // 建立一個數組
        // 給陣列元素賦值
        nums[0]=1;
        nums[1]=2;
        nums[2]=3;
        nums[3]=4;
        nums[4]=5;
        nums[5]=6;
        nums[6]=7;
        nums[7]=8;
        nums[8]=9;
        nums[9]=10;
        // 計算所有元素的和
        int sum =0;
        for (int i = 0; i < 10; i++) {
            sum +=nums[i];
        }
        System.out.println(sum);

記憶體分析

int[] arrays;  // 宣告一個數組,此時陣列在棧中建立,棧中只有一個 arrays的變數。
        arrays= new int[10];  // 陣列在堆中建立,並且開闢了10個記憶體空間用來儲存資料,預設值為建立型別

三種初始化

  • 靜態初始化: 就是直接給陣列賦值;
    例如: in【】 a ={1,2,3}
  • 動態初始化: 直接確定陣列的上界,但是並沒有賦值,只是開闢了記憶體空間 。此時根據自己的建立型別都有對應的預設值。

陣列的四個基本特點

  • 其長度是確定的陣列一旦被建立,它的大小就是不可以改變的
  • 其元素必須是相同型別,不允許出現混合型別
  • 陣列中的元素可以是任何資料型別,包括基本型別和引用型別
  • 陣列變數屬引用型別,陣列也可以看成是物件,陣列中的每個元素相當於該物件的成員變數。陣列本身就是物件,java中物件在堆中,陣列物件也在堆中

多維陣列

  • 多維陣列可以看成是陣列的陣列,比如二維陣列就是一個特殊的一維陣列,其每一個元素都是一個一維陣列
	int[][] arrays= {{1,2},{2,3,4},{4,5,6},{7,8}};// 定義一個二維陣列
        // 利用兩個for迴圈來遍歷數組裡面的資料
        for (int i = 0; i < arrays.length; i++) {
            for (int j = 0; j < arrays[i].length; j++) {
                System.out.println(arrays[i][j]);
                
            }

Arrays類

        int[] arrays ={1,2,3,4,5,6,7,8};
//        System.out.println(arrays);  // 顯示 [I@10f87f48
        // 利用工具類Arrays中的tostring方法遍歷整個陣列顯示
//        System.out.println(Arrays.toString(arrays));

            printstring(arrays);
    }
    public static void printstring(int[] arrays){
        for (int i = 0; i < arrays.length; i++) {
            if (i==0){
                System.out.print("[");
            }
            if (i ==arrays.length-1){
                System.out.print(arrays[i]+"]");
            }else{
                System.out.print(arrays[i]+",");
            }

        }

稀疏陣列

建立稀疏矩陣

public static void main(String[] args) {
        // 1 建立一個二維陣列
        int[][] array1 =new int[11][11];
        array1[1][2]=1;
        array1[2][3]=1;
        // 輸入原始陣列
        System.out.println("請輸入原始陣列:");
        printarray(array1);
        // 轉化為稀疏陣列儲存
        // 獲取有效值的個數
        int sum=0;
        for (int i = 0; i <11; i++) {
            for (int i1 = 0; i1 < 11; i1++) {
                if (array1[i][i1]!=0){
                    sum++;
                }

            }

        }
        System.out.println("有效值的個數為:"+sum);
        // 建立一個稀疏陣列的陣列
        int[][] array2=new int[sum+1][3];
        array2[0][0]=11;
        array2[0][1]=11;
        array2[0][2]=sum;
        // 遍歷二維陣列,將非零的值,存稀疏陣列中
        int count=0;
        for (int i = 0; i < array1.length; i++) {
            for (int j = 0; j < array1.length; j++) {
                if (array1[i][j]!=0){
                    count++;
                    array2[count][0]=i;
                    array2[count][1]=j;
                    array2[count][2]=array1[i][j];
                }

            }

        }
        // 輸出稀疏矩陣
        printarray(array2);
        System.out.println("=============");
        // 將稀疏矩陣還原
        int[][] array3 =new int[array2[0][0]][array2[0][1]];
        // 給其中的元素還原它的值
        for(int i = 1; i <array2.length; i++) {
            array3[array2[i][0]][array2[i][1]]=array2[i][2];

        }
        //  輸出還原的陣列
        printarray(array3);
    }
    // 定義一個輸入矩陣的方法
    public static void printarray(int[][] array){
        for (int[] x:array){
            for(int y:x){
                System.out.print(y+" ");
            }
            System.out.println();
        }
    }