首頁 > 軟體

Java深入淺出陣列的定義與使用上篇

2022-03-15 13:02:23

一、陣列的基本用法

1.什麼是陣列

陣列:儲存一組相同資料型別的資料的集合。

2.定義陣列 

int[] :int型別陣列 

double[] :double型別陣列

通過型別就可以定義變數,比如:

int[] array,array就是這個型別的變數,這個變數是儲存一組相同資料的變數。

三種陣列定義的方式:

第一種:

int[] array = {1,2,3,4,5,6};定義一個陣列且初始化 

雖然沒寫new,但實際上也是一個物件

注意事項:

int[10] array =  {1,2,3,4,5,6};寫法錯誤,int[] 屬於型別,中括號裡面不能加任何的數位,相當於在這裡破壞了它的型別。

第二種:

int[] array2 = new int[3];

 定義陣列未初始化

第三種:

int[] array3 = new int[]{1,2,3,4,5,6};

定義且初始化 

三種當中用的最多的就是第一種

3.陣列的使用

獲取陣列長度:

Java裡面可以直接通過陣列名array.length 求出當前陣列的長度

存取陣列元素:

存取陣列下標為4的元素 

越界存取陣列元素:

 Java語言越界直接報錯

更改陣列元素:

 通過陣列名中括號的方式,不僅僅可以存取下標的內容,也可以往下標裡面寫一些資料 

列印陣列: 

第一種:(for迴圈)

 第二種:(增強for迴圈,for each迴圈)

for迴圈和for each迴圈的區別:

for迴圈是可以拿到下標的,

for each迴圈是拿不到下標的,更多的是用於集合中

第三種:藉助Java的運算元組工具類 Arrays

二、陣列作為方法的引數

基本用法

JVM簡單介紹

 區域性變數在記憶體中的儲存:

參照不指向物件寫法:

這個參照不指向任何的物件

一個參照能不能同時指向多個物件嗎? 

對於這個程式碼來說只能指向一個物件,存一個物件的地址。最終只儲存了最後一個物件的地址 

陣列作為方法的引數傳遞的過程:

求解列印結果:

前兩種求解:

fun2列印結果:

分析例子:下圖代表什麼 

代表array2這個參照,指向了array1這個參照指向的物件。

下圖就代表了上面例子的意思:

注意事項:

參照指向參照這句話 是錯誤的,參照只能指向物件

參照一定在棧上嗎?

不一定,一個變數在不在棧上,是你變數的性質決定的,如果你就是一個區域性變數,一定是在棧上的。如果不是,例如,範例成員變數那就不一定就是在棧上的。

三、陣列練習題

1.交換兩個變數的值

public class TestDemo {
    public static void swap(int[] array){
        int tmp = array[0];
        array[0] = array[1];
        array[1] = tmp;
 
    }
    public static void main(String[] args) {
        int[] array = {10,20};
        System.out.println("交換前: "+array[0]+" "+array[1]);
        swap(array);
        System.out.println("交換後: "+array[0]+" "+array[1]);
    }

列印結果:

2.寫一個方法, 將陣列中的每個元素都 * 2 

 /**
     * 在原來的陣列上擴大2倍
     * @param array
     */
    public static void enlarge(int[] array){
        for (int i = 0; i <array.length ; i++) {
            array[i] = array[i]*2;
        }
 
    }
 
    public static void main(String[] args) {
        int[] array = {1,2,3,4,5,6,7};
        enlarge(array);
        System.out.println(Arrays.toString(array));
    }

列印結果:

把原來陣列擴大2倍的值放在一個新的陣列中

/**
     * 把原來陣列擴大2倍的值放在一個新的陣列中
     * @param array
     * @return
     */
    public static int[] func(int[] array) {
        int[] ret = new int[array.length];
        for (int i = 0; i < array.length; i++) {
            ret[i] = array[i] * 2;
        }
        return ret;
    }
 
    public static void main(String[] args) {
        int[] array = {1,2,3,4,5,6,7};
       int[] ret =  func(array);
        System.out.println(Arrays.toString(ret));
    }

3.模擬實現tostring函數

public static String myToString(int[] array){
        String str = "[";
 
        for (int i = 0; i <array.length ; i++) {
            str = str+array[i];
            if(i != array.length-1){
                str+= ",";
            }
        }
        str= str + "]";
        return str;
    }
 
    public static void main(String[] args) {
        int[] array = {1,2,3,4,5,6,7};
       String str =  myToString(array);
        System.out.println(str);
    }

列印結果:

4.找陣列中的最大元素 

    public static int maxNum(int[] array){
        if(array == null) return -1;
        if (array.length == 0) return -1;
        int max = array[0];
        for (int i = 1; i <array.length ; i++) {
            if(max < array[i]){
                max = array[i];
 
            }
        }
        return max;
    }
 
    public static void main(String[] args) {
        int[] array = {12,8,14,26,5,7,8};
        int max = maxNum(array);
        System.out.println(max);
    }

列印結果:

5.查詢陣列中指定元素(順序查詢) 

   public static int findNum(int[] array,int key){
        for (int i = 0; i <array.length ; i++) {
            if(array[i] == key){
                return i;
            }
        }
        return -1;
    }
 
    public static void main(String[] args) {
        int[] array = {2,4,5,6,11,7,8,9};
        System.out.println(findNum(array, 7));
 
    }

列印結果:

6.查詢陣列中指定元素(二分查詢) 

二分查詢的必要條件是必須有序的數列
    public static int binarySearch(int[] array,int key){
        int left = 0;
        int right = array.length-1;
        while(left <= right){
            int mid = (left+right)/2;
            if(array[mid] > key){
                right = mid - 1;
            }else if(array[mid] < key){
                left = left + 1;
            }else{
                return mid;
            }
 
        }
        return -1;
    }
 
    public static void main(String[] args) {
        int[] array = {12,14,15,16,18,23};
        System.out.println(binarySearch(array, 15));
    }

列印結果:

 總結:

本文簡單介紹了什麼是陣列、陣列的寫法、如何列印陣列、陣列的簡單使用。通過簡單例題的方式加深對陣列的理解。上述就是今天的內容,文章哪裡出現了問題我都會積極改正,也希望大家能更快的掌握自己想要的知識,讓我們一起加油!!!!!

到此這篇關於Java深入淺出陣列的定義與使用上篇的文章就介紹到這了,更多相關Java 陣列內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com