數組是相同類型資料的有序集合。
數組描述的是相同類型的若幹個資料,按照一定的先後次序排列而成。
其中,每一個資料稱作為一個數組元素,每個數組元素可以通過一個下表來通路他們。
首先必須聲明數組變量,才能在程式中使用數組。下面是聲明數組變量的文法:
Java語言使用new操作符來建立數組,文法如下
數組的元素是通過索引來通路的,數組索引從0開始。
擷取數組長度 :
java記憶體分析:
堆:存放new的對象和數組,可以被所有的線程共享,不會存放别的對象引用
棧:存放基本變量類型(會包含這個基本類型的具體數值),引用對象的變量(會存放這個引用在堆裡面的具體位址)
方法區:可以被所有的線程共享,包含了所有的class和static變量
寫代碼畫圖分析記憶體
靜态初始化
動态初始化
數組的預設初始化
數組是引用類型,它的元素相當于類的執行個體變量,是以數組一經配置設定空間,其中的每個元素也被按照執行個體變量同樣的方式被隐式初始化。
其長度是确定的。數組一旦被建立,它的大小就是不可以改變的。
其長度必須是相同類型,不允許出現混合類型。
數組的元素可以是任何資料類型,包括基本類型和引用類型。
數組變量屬引用類型,數組也可以看成是對象,數組中的每個元素相當于該對象的成員變量。數組本身就是對象,Java中對象是在堆中的,是以數組無論儲存原始類型還是其他對象類型,數組對象本身是在堆中的。
下表的合法區間:[0, length - 1],如果越界就會報錯;
ArrayIndexOutOfBoundsExcepttion:數組下标越界異常!
小結:
數組是相同資料類型(資料類型可以為任意類型)的有序集合
數組也是對象。數組元素相當于對象的成員變量
數組長度的确定的,不可變的。如果越界,則報:ArrayIndexOutOfBoundsExcepttion
for-each 循環
數組作方法入參
數組作傳回值
多元數組可以看成是數組的數組,比如二維數組就是一個特殊的一維數組,其每一個元素都是一個一維數組。
二維數組
以上二維數組 a 可以看成一個兩行五列的數組。
數組的工具類java.util.Arrays
由于數組對象本身并沒有什麼方法可以供我們調用,但API中提供了一個工具類Arrays供我們使用,進而可以對資料對象進行一些基本的操作。
檢視JDK幫助文檔
Arrays類中的方法都是static修飾的靜态方法,在使用的時候可以直接使用類名進行調用,而“不用”使用對象來調用(注意:是 “不用” 而不是 “不能” )
具有以下常用功能:
給數組指派:通過fill方法。
對數組排序:通過sort方法,按升序
比較數組:通過equals方法比較數組中元素值是否相等。
查找數組元素:通過binarySearch 方法能對排序号的數組進行二分查找法操作。
冒泡排序
冒泡排序無疑是最為出名的排序算法之一,總共有八大排序!
冒泡的代碼還是相當簡單的,兩層循環,外層冒泡輪數,裡層一次比較,江湖中人人盡皆知。
我們看到嵌套循環,應該立馬就可以得出這個算法的時間複雜度為O(n2)。
當一個數組中大部分元素為0,或者為同一值的元素時,可以使用稀疏數組來儲存該數組。
稀疏數組的處理方式是:
記錄數組一共有幾行幾列,有多少個不通知
把具有不同值得元素和行列及值記錄在一個小規模的數組中,進而縮小程式的規模