天天看點

《java練級之旅》第三天(數組的基本概念)

🌀🌀🌀作者:@小魚不會騎車

🍁🍁🍁專欄:《java練級之旅》

🎀🎀🎀個人簡介:一名專科大一在讀的小比特,努力學習程式設計是我唯一的出路😎😎😎

《java練級之旅》第三天(數組的基本概念)

作者心裡話

小魚一直都是秉承着“開開心心看部落格,快快樂樂學知識”這個觀點來給大家用一些接地氣的話進行講解,可能會有人覺得小魚太墨迹了,小魚這裡也很樂意接受大家的意見,會進行采納,大家也可以指出小魚的不足,小魚也會積極的進行改變,總之,願我們越來越優秀

前言

今天講到的是關于數組的内容,大緻分為什麼是數組,數組如何建立,我們的數組是什麼類型,以及數組在java中的一些好用的方法

《java練級之旅》第三天(數組的基本概念)

今天呢,我先帶大家從數組的基本概念開始,基本概念總共分成三個部分,這裡大家也可以看到上面的思維導圖,現在我們步入正題

(數組的基本概念)

1.0為什麼要使用數組

我們來思考這個問題

如果我我們班有5個同學,我該如何将同學的姓名儲存下來

在我沒有接觸數組這個概念時,我就會認為,簡單嘛,建立五個變量,輕輕松松,就像面的代碼

//方法一
        String a="張三";
        String b="李四";
        String c="王五";
        String d="小明";
        String e="小朋";
           

這不是簡簡單單嘛,其實我想說這種方法可以是可以,但是如果是10個同學的姓名呢,50個同學的姓名呢,你可能就傻了,雖然你知道可以建立50個變量,但是也需要好久啊,于是,就涉及到了一個新的知識點,數組,那麼什麼是數組呢?

《java練級之旅》第三天(數組的基本概念)

大家看,這就是一個數組,當然啊,數組裡面是什麼都沒有儲存的,我給大家這麼畫就是讓大家可以清晰的看出數組有幾個空間,大家可以看到是7個空間,

數組可以看成相同類型元素的集合,在記憶體中是一段連續的空間

1.我們的每個空間就相當于一個變量,每個變量的類型是由這個數組的類型決定的,注意!!!我們的數組裡面的類型都是同一類型

2.我們數組的下标是從0開始的

3.如果我們存放的元素個數大于數組所能裝載的最大元素個數,就會形成越界

知識點1

《java練級之旅》第三天(數組的基本概念)

大家可以看到,我們的數組裡面的元素類型都是字元串類型的,如果我們将其中的某個元素替換為整形,大家看

《java練級之旅》第三天(數組的基本概念)
《java練級之旅》第三天(數組的基本概念)

這是我們的報錯資訊,當然,不止是在java中,我們的C語言也是如此,但是在C語言存在一個類型是結構體,可以存放不同類型,大家如果感興趣可以去了解了解,

知識點2

關于為什麼我們的數組下标是從0開始,該怎麼去驗證呢,大家請看

《java練級之旅》第三天(數組的基本概念)

當我輸出第0個元素的時候輸出的就是"張三",這時候我們的0就是下标,接下來我們按順序輸出array數組裡面的元素

《java練級之旅》第三天(數組的基本概念)

知識點3

數組越界是什麼,給大家看個圖檔

《java練級之旅》第三天(數組的基本概念)

如果我想在這個元素後面再多加一個元素,會有什麼後果呢?我們可以看到,我們的第6個下标之後以及沒有空間了,也就是沒有變量再去存儲這個8了,如果我們強行給這個8添加給這個數組,就會出現以下問題

《java練級之旅》第三天(數組的基本概念)

第一步是初始化這個數組,給這個數組指派為0123456(這個後續會講),大家隻需要知道我的數組現在裡面的值為是什麼就行,

第二步就是我們想将這個8強制指派給這個數組,因為數組隻有7個空間嘛,我想将我的8存到這個數組是根本沒地方存的,如果我強行存入,就會報錯,是以我們要時刻注意數組越界這個問題。

第三步就是經過執行的報錯資訊。

2.0數組的建立及初始化

2.1 數組的建立

T[]數組名=new T[N];
           

T表示數組中存放的類型;

T[]表示數組的類型;

N表示數組存放的元素的個數

《java練級之旅》第三天(數組的基本概念)

一般通過new關鍵字來執行個體化對象

new一個對象可以了解為建立了一個對象;

那是不是就又可以了解為,java當中的數組其實就是一個對象

是以我們聽過一句話,就是:java當中一切皆對象,既然我們的數組是對象,那麼我們在new的時候就會申請一塊記憶體,

2.2 數組的初始化

關于數組的使用方法,有三種,給大家一一列舉出來

《java練級之旅》第三天(數組的基本概念)

如上圖,我們的array1和array2是一樣的,都是建立一個初始化的數組,我們的array3其實就是new了一個數組的空間出來,隻是配置設定了一個記憶體并沒有初始化(記憶體大小是6,裡面放的是0),未初始化的數組預設為0,就跟圖檔一樣

《java練級之旅》第三天(數組的基本概念)
int [] array1=new int[10]//建立一個可以存放10個int類型元素的數組
double []array2=new double[5]//建立一個可以存放5個double類型元素的數組
Strint []array3=new String[3]//建立一個可以存放3個String類型元素的數組
           

數組的初始化主要分為動态初始化和靜态初始化

動态初始化

在數組建立時,直接指定數組的元素個數

int [] array1=new int[10]
           

靜态初始化

在數組建立時,不直接指定數組元素個數,而直接将具體的資料内容進行指定

int []array=new int[]{1,2,3,4,5,6,7};
           
  1. 靜态初始化雖然沒有指定數組的長度,編譯器在編譯時會根據{}中元素的 個數來決定數組的長度
  2. 靜态初始化時,{}的資料類型必須與前面[]中的資料類型一緻

    3.靜态初始化可以簡寫,省去後面的new T[];

注意事項1

就是我們的這個位置,這個位置是不可以輸入任何值的

《java練級之旅》第三天(數組的基本概念)

注意事項2在array2中(我們不需要在右側的方框中輸入元素的個數,編譯器會自動幫我們進行計算元素個數并開辟記憶體的,如果我輸入方框中的元素個數大于或者小于我們初始化的元素的個數都會報錯,是以不推薦在方框中寫入元素個數)

小知識點

我們開辟動态數組時,不同類型的未經過初始化的值也是不一樣的

《java練級之旅》第三天(數組的基本概念)

3.0數組的使用

列印數組的三種解法

方法一

先問大家個問題,如果需要大家實作将數組的每個元素都拷貝出來,大家會怎麼做,可能有學過c語言的同學就應該會想到。用循環将數組的每個元素列印出來,對這是一個方法,代碼如下

int []array={1,2,3,4,5,6};
        for (int i = 0; i <array.length ; i++) {
            System.out.print(array[i]+" ");
        }
           
int []array={1,2,3,4,5,6};
    for(int x:array) {
        System.out.print(x+" ");
        }
    }
           
int []array={1,2,3,4,5,6};
        System.out.println(Arrays.toString(array));