更新時間:2019-09-27 09:44:44 來源:動力節點 瀏覽2727次
首先,數組是Java中的對象。它們不是像int、short或long這樣的基本類,也不是具有很多方法的全功能對象,但由于它們是對象,所以它們隱式地擴展了Object,這就是為什么可以使用數組引用(例如toString())調用java.lang.object的任何方法。
2.Java中數組的另一個重要之處是,一旦創建,就不能更改數組的大小。好奇的開發人員可能會問,我們如何在Java中擁有像ArrayList這樣的動態集合,可以在飽和的時候調整自身大小?好吧,擴容不像你想得那樣,可以簡單地增加一個數組的大小來容納額外的元素。為了增加大小,必須創建一個新數組,并將內容從舊數組復制到新數組。盡管存在將元素從一個數組復制到另一個數組的快速方法,但它仍然是一個代價很大的操作,還會降低Java應用程序的性能。這就是為什么初始化具有適當大小的數組或集合仍然是最好的做法之一。
3.關于數組,第三件要知道的是它的長度屬性,它告訴你數組的大小或它可以容納多少元素。這通常也是造成混淆的原因,因為字符串有類似的length()方法,這是一個方法,而數組長度是屬性,所以不再有括號。另一個增加這種混淆的是arraylist的size()方法,它也返回arraylist可以容納多少元素。下面是一個代碼片段示例,用于查找Java中數組的長度。
int[]arrayOfInts=newint[]{101,102,103,104,105};
System.out.println("lengthofarrayOfIntsis:"+arrayOfInts.length);//print5
在Java中循環遍歷數組時,可以使用數組的長度來避免訪問無效的索引,如下一個示例所示。
4.數組索引從零開始,因此第一個元素的索引為0,最后一個元素的索引為length-1。此屬性用于迭代for循環中的所有元素。String[]cities=newString[]{"London","Paris","NewYork","HongKong","Tokyo"};
您可以看到,我們從0(第一個元素)開始循環,以小于長度的方式結束循環,例如length-1(最后一個元素索引)。如果嘗試訪問數組[長度],將獲得arrayIndexOutOfBoundsException,因為最后一個索引是length-1。
5.正如我之前所說的,Java虛擬機將數組視為對象。數組的類型是“[elementType”,其中elementtype是元素的類型。例如,一個(一維)整數數組的類型為“[I”,同樣,一維短數組的類型為“[S”,一維浮點數組的類型為“[F”。對于二維數組,可以得到兩個“[[”,例如,二維int數組的類型為“[[i”。當您在Java中打印數組時,可以檢查這一點。它打印其元素類型和哈希代碼,如下所示。
6.如果關注我的上一個示例,那么您會注意到使用toString()打印數組不會產生除元素類型之外的任何有用的內容。理想情況下,我們希望按照它們存在的順序查看數組的元素。我們可以重寫array類的toString()方法嗎?不,這不是一個選項,但不要擔心我們有一個實用程序類java.util.Arrays,它包含幾種方法來處理不同類型的數組。我們可以使用Arrays類的toString()和deepToString()方法在Java中打印一維和多維數組的數組元素,如下所示。
7.與toString()類似,數組的equals()方法也沒有用處。在大多數情況下,我們希望將數組的元素及其順序與另一個數組及其元素進行比較,但array的equals()方法不這樣做,而是引用比較,僅當兩個變量都指向同一個數組對象時才返回true,如下例所示。但是不用擔心,Arrays類用equals()和deepEquals()方法來比較Java中的一維數組和多維數組元素。您可以通過以下示例推斷出相同的理解:
您可以看到盡管元素及其順序相同,第一條語句是假的,因為“==”運算符僅在兩個變量都指向同一數組時才返回真,這是第二次相等性檢查的情況。同樣,equals()方法也模擬了==運算符的行為,因為數組不會重寫對象的equals()方法,其默認行為是基于相同的引用來決定相等性。Arrays.equals()是檢查兩個數組在Java中是否相等的正確方法。為此,你應該一直使用它。
8.Java程序員應該習慣使用deepEquals()方法來檢查兩個多維數組的相等性,因為Arrays.equals()方法不執行多維比較。以下是檢查Java中多維數組相等性的示例:
9.使用java時,你需要多次在靜態數組與動態數組之間進行轉換。
10.在Java中有幾種初始化數組的方法。你也可以在不初始化的情況下創建它們,在這種情況下,所有存儲桶都將保持元素類型的默認值,例如,如果你創建一個空數組并且沒有初始化它,則所有存儲桶都將保持為零,因為這是Java中整數變量的默認值。類似地,布爾數組默認使用false值初始化,String數組使用空值初始化。如果您事先知道這些值,則可以在創建時初始化數組,如下所示:
11.一個額外的提示是,array與arraylist有很大的不同,后者是一個動態數組,它可以根據需要調整自身的大小。另一方面,創建后不能更改數組的大小。除了這一事實之外,這兩個類之間還有幾個不同之處,例如ARAYLIST是Java集合框架的一部分,但數組不是。
這是關于Java中數組數據結構的一些要點的列表。使用數組來保存相同類型的元素,例如整數、字符串或對象,但不能混合它們,例如Java數組不能同時包含整數和字符串,在編譯時是錯誤的,但對于對象,如果編譯器允許,它將在運行時拋出arraystoreException。同樣,如果知道索引,數組也是用于訪問元素的快速數據結構之一
以上就是動力節點java培訓機構小編介紹的“Java中的數組數據結構需要了解的要點”的內容,希望對大家有幫助,更多java最新資訊請繼續關注動力節點java培訓機構官網,每天會有精彩內容分享與你。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習