Java數組、動態數組、二維數組的應用


一、認識數組

1、容器的概念

​ 用於存儲數據的一塊內存稱為容器,生活中有很多容器,例如水杯,衣櫃,以及存放“東西”

​ 存放在容器中的數據,稱為“元素”

2、為什么會存在數組呢?

​ 假如現在存儲全班同學的成績,全班40人,按照定義變量的思維,需要定義40個double類型的數據變量,每次從40個變量中找一個變量,操作很麻煩,java中可以定義以和數據類存放40個人的成績,使用數據類型存儲

​ 數組定義:它是相同數據類型的有序集合

3、數據特點

  • 數組的長度固定(數據的長度一旦聲明,就不能改變)

  • 數組中存儲的元素數據類型必須相同

  • 數組的元素 通過下標訪問,且下標默認從0開始

  • 數組類型屬於引用數據類型,數組的元素類型 既可以是基本數據類型也可以是引用數據類型

4、數組的創建方式

方式一

數組存儲的數據類型 [] 數組名 = new 數組存儲的數據類型 [長度]

詳解:

​ 數組存儲的數據類型:創建數組容器中可以存儲說明數據類型(基本數據類型、引用數據類型)

​ []:表示數組

​ 數組名:給數組起名字,遵循標識符規則

​ new:創建數組的關鍵字

​ [長度]:數組的長度,這個長度定義后不可改變 可表示為array.length

例如

int [] arr = new int[3];

new出來的空間在堆內存中,數組是引用數據類型,存在內存地址

內存解析:在堆內存中開票一段連續的3個長度的int類型的內存空間,並由arr變量指向這塊內存地址(換句話說rr輸出就是這個內存的地址)

方式二

數據類型 [] 數組名 = new 數據類型 []{元素1,元素2,元素3.。。。。 }

這里的數組長度就是元素的個數自動分配大小

int[] arr = new int[]{99 .97 .95};
或者
int arr [] = new int[]{90,95,96,94}

方式三

數據類型 [] 數組名 = {元素1,元素2,元素3.。。}

注意:這里的元素類型必須滿足數組的元素數據類型

char [] arr = {'a','b','c'}
或者
char arr [] = {'a','b','c'} 

5、數組的訪問

​ 數組的訪問通過索引訪問

索引(下標):每一次數組的元素都有一個編號,這個編號從0開始,這個編號稱為數組的索引,通過數組名[索引]訪問到數組的元素

例如:訪問數組的第二個元素:數組名[1];

數組的長度:數組的長度聲明以固定,訪問數組的長度:數組名.length

​ 數組的最大索引 = 數組長度 - 1

數組元素的賦值:通過索引可以給元素賦值 數組名[索引] = 值 將數據賦值給指定索引的元素

二、動態數組

1、數組的定義

​ 用於存儲相同數據類型的一組連續的存儲空間

2、 數組的特點

​ 數組的長度一旦定義,則不可改變

​ 訪問數組元素需要通過下標(索引)訪問,下標從零開始

​ 數組是引用數據內存,內存分布在堆內存中,數組的變量存儲在內存地址

3、動態數組

​ 由於數組的長度定義后不能改變,所謂“動態數組”是可以增加數據長度,所以java實現動態數組是改變數組變量指向不同的內存地址,本質並沒有將數組的長度改變

動態數組的本質:將內存空間的改變,以及指向數組內存地址的改變

操作1:數組添加新元素,可添加在最后面,也可以添加到指定位置

  /**
     * 添加元素,(添加到末尾)
     */
    public static int[] addEle(int []array ,int num){
        //初始數組   添加的元素
//        int array [] = {10,9,3,2,1};
        //1、創建臨時數組的長度
        int  []  tempArray = new int[array.length+1];
        //2\將目標數組的元素 copy到 臨時數組的內存中
        for (int i=0;i<array.length;i++){
            tempArray[i]=array[i];
        }
        //3、將添加的元素放入臨時數組中
        tempArray[tempArray.length-1]=num;
        //4、將目標數組的地址  指向  臨時數組的地址
        array=tempArray;  //由於tempArray 是局部變量  方法執行完內存自動回收
                        //   如果不返回  沒有地址指向tempArray的內存
                        //   如果返回並接受  說明這塊內存地址仍然使用
        return array;
        }

    /**
     * 將元素num 添加到指定index的位置
     * @param args
     */
    public static int [] addEle(int [] arr,int num,int index){
        //1、創建臨時數組的大小
        int [] tempArray = new int[arr.length+1]
        //2、便利arr
        for(int i=0;i<=arr.length;i++){
            //如果i<index
            if (i<index){
                tempArray[i]=arr[i];
            }else if (i==index){
                tempArray[i]=num;
            }else{
                //i>index
                tempArray[i]=arr[i-1];
            }
        }
        //賦值
        arr=tempArray;
        return arr;

    }
    public static void main(String[] args) {
        //擴容數組
//        int [] array = {5,4,3};
//        //動態擴容一個
//        array=addEle(array,2);
//        for (int i=0;i<array.length;i++){
//            System.out.println(array[i]);
//        }
//        System.out.println(array.length);

        //插入到指定下標
        int[]arrary={10,9,3,2,1};
        arrary = addEle(arrary,5,5);
        System.out.println(Arrays.toString(arrary)); // 直接輸出數組的每一個元素
    }

操作2:可刪除元素 刪除指定下標元素

 /**
     * 刪除指定下標的數組元素,刪除后面的向前縮進一個
     */
    public static int [] Ele(int arr[],int index){
        //1、創建一個新的臨時數組
        int tempArray [] =new int[arr.length-1];
        for (int i=0;i<arr.length-1;i++){
            if (i<index){
                tempArray[i]=arr[i];
            }else {
                tempArray[i]=arr[i+1];
            }
                //i=3  temparray[3]=arr[4];
                //i=4  temparray[4]=arr[4+5];
        }
        //賦值
        arr=tempArray;
        return arr;
    }

    public static void main(String[] args) {
        int array []={10,5,4,7,8,6};
        array=Ele(array,3);
        System.out.println(Arrays.toString(array));
    }

三、二維數組

1、二維數組定義

​ 在一維數組中定義每一個元素也是一個數組元素,這樣的數組稱為“二維數組”多維數組就是在一維數組上再次定義二維數組或 三位數組 等。

  一維數組定義  
  int [] array = { 1, 2 ,  3}
  二維數組定義
   //定義三個長度的二維數組,其數組的每一個元素是一個一維數組 
 int [][] arrays = {{} ,{} ,{}} ;  
 或者
 int [][] arrays = new int [3][2];  // 左邊的【】中表示二維數組的長度  ,其中2可以省略,3 不能省略 
  // 注意: 等號左邊有幾個【】 就表示幾維

  //  1、定義二維數組
        int [][] array;
        //  定義時給二維數組賦值  3個長度的二維數組  里面的一維數組的長度不一定相等
        int [][] array2 = {{1,2,3},{4,5},{7,8}};
        //  定義時只指定大小 不給定初始值
        int [][] array3 = new int[3][]; // 等價 {{},{},{}}
       // array3[0][0]=1; // 賦值時 空指針異常 ,因為里面的一維數組是空的

        //定義一個3個長度的二維數組,里面的元素長度是2
         int array4 [][] = new int[3][2];
         //給元素賦值
        array4[0][0] =1;

  // 輸出二維數組中的所有元素
        for(int i=0;i<array4.length;i++){
           // System.out.println(array4[i]);
            for(int j=0;j<array4[i].length;j++){
                System.out.println(array4[i][j]);
            }
        }

2、二維數組的應用

1、定義5*5的矩陣,計算最大值最小值

2、五子棋游戲


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM