知識分享:Java數(shù)組
本文大綱

前言
上一章文章?幫你看清 Java 字符串的世界,我們學(xué)習(xí)了 Java 的一種引用類型——字符串,今天我們來學(xué)習(xí)另外一種引用類型——數(shù)組。
想要學(xué)習(xí)更多知識,請點擊:https://www.bilibili.com/video/BV1dy4y1W7Db
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??https://www.bilibili.com/video/BV1Qb4y1D75J
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??https://www.bilibili.com/video/BV1qo4y1f7Uw
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??https://www.bilibili.com/video/BV1s64y1i77s
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??https://www.bilibili.com/video/BV1g84y1F7vS
為什么需要數(shù)組
試想一個場景,Java 課老師要統(tǒng)計全班同學(xué)的期末平均成績,如果用程序編寫該怎么做呢?
最原始的做法就是,有幾個學(xué)生定義幾個整型變量,然后把分數(shù)賦值給這些變量,最后求和再除以學(xué)生數(shù)。假設(shè)有 6 個學(xué)生,就可以有以下程序:

你會發(fā)現(xiàn)這樣的程序?qū)懫饋砗苈闊也痪哂衅者m性,學(xué)生人數(shù)變成 7 個就得改代碼。另外學(xué)生人數(shù)如果變多,比如 100 個,你去定義 100 個變量那可能要累死!
那有沒有更好的方法呢?
就這個場景來看,學(xué)生的成績都是整數(shù)類型,那分組統(tǒng)一處理是不是會比較好?求平均成績本質(zhì)上就是這個組內(nèi)所有成績求和再除以學(xué)生個數(shù)。
想要學(xué)習(xí)更多知識,請點擊:https://www.bilibili.com/video/BV1dy4y1W7Db
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??https://www.bilibili.com/video/BV1Qb4y1D75J
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??https://www.bilibili.com/video/BV1qo4y1f7Uw
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??https://www.bilibili.com/video/BV1s64y1i77s
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??https://www.bilibili.com/video/BV1g84y1F7vS
聰明的計算機先驅(qū)者也是基于類似思路想出一種數(shù)據(jù)結(jié)構(gòu),解決了這種問題。那就是數(shù)組。
什么是數(shù)組
什么是數(shù)組?
數(shù)組是存儲有限個相同類型數(shù)據(jù)的集合。
通過這個定義描述,我們可以發(fā)現(xiàn)數(shù)組的三個特點。首先它是一個存儲數(shù)據(jù)的結(jié)構(gòu),其次是存到它里面的數(shù)據(jù)類型都是相同的,最后它是一個數(shù)據(jù)集,可以往里邊增加或者移除數(shù)據(jù),但能容納的數(shù)量是有限的。
那基于定義描述,數(shù)組就有這些關(guān)鍵信息:數(shù)組類型,數(shù)組大小,數(shù)組名。
數(shù)組類型決定數(shù)組支持什么樣的數(shù)據(jù)類型。
數(shù)組大小決定了數(shù)組最多能容納幾個數(shù)據(jù)。
想要學(xué)習(xí)更多知識,請點擊:https://www.bilibili.com/video/BV1dy4y1W7Db
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??https://www.bilibili.com/video/BV1Qb4y1D75J
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??https://www.bilibili.com/video/BV1qo4y1f7Uw
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??https://www.bilibili.com/video/BV1s64y1i77s
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??https://www.bilibili.com/video/BV1g84y1F7vS
數(shù)組名可用于數(shù)組的各種操作,也是我們之前提到過的變量的概念。
Java 怎么表示數(shù)組
那在 Java 中,怎么表示數(shù)組呢?格式如下:


Java 數(shù)組的特點
觀察代碼我們發(fā)現(xiàn),初始化一個新的數(shù)組是用?new
?這個關(guān)鍵字,同時確定了數(shù)據(jù)類型和數(shù)組大小。代碼示例中數(shù)據(jù)類型就是?int
,數(shù)組大小就是 6。
數(shù)組一旦初始化完成,大小就不可改變。你可以理解成計算機為數(shù)組分配了連續(xù)的內(nèi)存空間,這塊空間相當于就固定了,通過數(shù)組名來進行訪問。
想要學(xué)習(xí)更多知識,請點擊:https://www.bilibili.com/video/BV1dy4y1W7Db
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??https://www.bilibili.com/video/BV1Qb4y1D75J
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??https://www.bilibili.com/video/BV1qo4y1f7Uw
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??https://www.bilibili.com/video/BV1s64y1i77s
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??https://www.bilibili.com/video/BV1g84y1F7vS

數(shù)組初始化會有缺省值,整型都是?0
,浮點型都是?0.0
,布爾型都是?false
。當然你也可以在初始化的時候就指定值,比如這樣?int[] initStudentScoreArray = new int[]{88, 89, 90, 93, 79, 85};
,這樣還有個好處,就是不用寫數(shù)組大小,因為編譯器會自動推算數(shù)組大小。其實還可以進一步簡寫為:int[] sampleStudentScoreArray = {88, 89, 90, 93, 79, 85};
。
數(shù)組元素的訪問通過索引實現(xiàn),索引從?0
?開始,比如 6 個元素的數(shù)組,索引范圍是?0~5
。如果訪問范圍之外的索引,會拋數(shù)組越界異常。

數(shù)組元素是可以修改的,通過賦值語句,比如?studentScoreArray[0] = 88;
。
數(shù)組可通過?數(shù)組名.length
?來獲取數(shù)組的大小。
數(shù)組既然是引用類型,那么數(shù)組名修改指向就可以更新它的內(nèi)容。以下代碼你猜輸出結(jié)果會是什么呢?
想要學(xué)習(xí)更多知識,請點擊:https://www.bilibili.com/video/BV1dy4y1W7Db
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??https://www.bilibili.com/video/BV1Qb4y1D75J
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??https://www.bilibili.com/video/BV1qo4y1f7Uw
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??https://www.bilibili.com/video/BV1s64y1i77s
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??https://www.bilibili.com/video/BV1g84y1F7vS

沒錯,數(shù)組變量?studentScoreArray
?在指向?otherArray
?之前指向的數(shù)組后,studentScoreArray
代表的也就是 3 個元素的數(shù)組了。

輸出結(jié)果如下:

總結(jié)
本文介紹了程序設(shè)計語言中最為常用的一種數(shù)據(jù)結(jié)構(gòu)——數(shù)組。通過一個常見場景引出了數(shù)組誕生的背景,接著介紹了數(shù)組的概念,然后講解了在 Java 中數(shù)組的表示方式,最后結(jié)合示例分析了 Java 數(shù)組的特點。希望對你能夠有所啟發(fā)和幫助,記得點贊支持下!
想要學(xué)習(xí)更多知識,請點擊:https://www.bilibili.com/video/BV1dy4y1W7Db
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??https://www.bilibili.com/video/BV1Qb4y1D75J
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??https://www.bilibili.com/video/BV1qo4y1f7Uw
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??https://www.bilibili.com/video/BV1s64y1i77s
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??https://www.bilibili.com/video/BV1g84y1F7vS
作者:蝸?;ヂ?lián)網(wǎng)
鏈接:https://juejin.cn/post/6953407192112316430
來源:掘金
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。