Java中的數(shù)組數(shù)據(jù)結(jié)構(gòu)需要了解的要點(diǎn)

Java中的數(shù)組數(shù)據(jù)結(jié)構(gòu)需要了解的要點(diǎn)

長(zhǎng)沙牛耳教育      2022-05-03 10:49:01     82

Java中的數(shù)組數(shù)據(jù)結(jié)構(gòu)需要了解的要點(diǎn),  首先,數(shù)組是Java中的對(duì)象。它們不是像int、short或long這樣的基本類,也不是具有很多方法的全功能對(duì)象,但由于它們是對(duì)象,

課程價(jià)格 請(qǐng)咨詢

上課時(shí)段: 授課校區(qū):

詳細(xì)介紹



  首先,數(shù)組是Java中的對(duì)象。它們不是像int、short或long這樣的基本類,也不是具有很多方法的全功能對(duì)象,但由于它們是對(duì)象,所以它們隱式地?cái)U(kuò)展了Object,這就是為什么可以使用數(shù)組引用(例如toString())調(diào)用java.lang.object的任何方法。


  2.Java中數(shù)組的另一個(gè)重要之處是,一旦創(chuàng)建,就不能更改數(shù)組的大小。好奇的開發(fā)人員可能會(huì)問,我們?nèi)绾卧贘ava中擁有像ArrayList這樣的動(dòng)態(tài)集合,可以在飽和的時(shí)候調(diào)整自身大???好吧,擴(kuò)容不像你想得那樣,可以簡(jiǎn)單地增加一個(gè)數(shù)組的大小來容納額外的元素。為了增加大小,必須創(chuàng)建一個(gè)新數(shù)組,并將內(nèi)容從舊數(shù)組復(fù)制到新數(shù)組。盡管存在將元素從一個(gè)數(shù)組復(fù)制到另一個(gè)數(shù)組的快速方法,但它仍然是一個(gè)代價(jià)很大的操作,還會(huì)降低Java應(yīng)用程序的性能。這就是為什么初始化具有適當(dāng)大小的數(shù)組或集合仍然是最好的做法之一。


  3.關(guān)于數(shù)組,第三件要知道的是它的長(zhǎng)度屬性,它告訴你數(shù)組的大小或它可以容納多少元素。這通常也是造成混淆的原因,因?yàn)樽址蓄愃频膌ength()方法,這是一個(gè)方法,而數(shù)組長(zhǎng)度是屬性,所以不再有括號(hào)。另一個(gè)增加這種混淆的是arraylist的size()方法,它也返回arraylist可以容納多少元素。下面是一個(gè)代碼片段示例,用于查找Java中數(shù)組的長(zhǎng)度。


  int[]arrayOfInts=newint[]{101,102,103,104,105};


  System.out.println("lengthofarrayOfIntsis:"+arrayOfInts.length);//print5


  在Java中循環(huán)遍歷數(shù)組時(shí),可以使用數(shù)組的長(zhǎng)度來避免訪問無效的索引,如下一個(gè)示例所示。


  4.數(shù)組索引從零開始,因此第一個(gè)元素的索引為0,最后一個(gè)元素的索引為length-1。此屬性用于迭代for循環(huán)中的所有元素。String[]cities=newString[]{"London","Paris","NewYork","HongKong","Tokyo"};

  您可以看到,我們從0(第一個(gè)元素)開始循環(huán),以小于長(zhǎng)度的方式結(jié)束循環(huán),例如length-1(最后一個(gè)元素索引)。如果嘗試訪問數(shù)組[長(zhǎng)度],將獲得arrayIndexOutOfBoundsException,因?yàn)樽詈笠粋€(gè)索引是length-1。


  5.正如我之前所說的,Java虛擬機(jī)將數(shù)組視為對(duì)象。數(shù)組的類型是“[elementType”,其中elementtype是元素的類型。例如,一個(gè)(一維)整數(shù)數(shù)組的類型為“[I”,同樣,一維短數(shù)組的類型為“[S”,一維浮點(diǎn)數(shù)組的類型為“[F”。對(duì)于二維數(shù)組,可以得到兩個(gè)“[[”,例如,二維int數(shù)組的類型為“[[i”。當(dāng)您在Java中打印數(shù)組時(shí),可以檢查這一點(diǎn)。它打印其元素類型和哈希代碼,如下所示。

  6.如果關(guān)注我的上一個(gè)示例,那么您會(huì)注意到使用toString()打印數(shù)組不會(huì)產(chǎn)生除元素類型之外的任何有用的內(nèi)容。理想情況下,我們希望按照它們存在的順序查看數(shù)組的元素。我們可以重寫array類的toString()方法嗎?不,這不是一個(gè)選項(xiàng),但不要擔(dān)心我們有一個(gè)實(shí)用程序類java.util.Arrays,它包含幾種方法來處理不同類型的數(shù)組。我們可以使用Arrays類的toString()和deepToString()方法在Java中打印一維和多維數(shù)組的數(shù)組元素,如下所示。

  7.與toString()類似,數(shù)組的equals()方法也沒有用處。在大多數(shù)情況下,我們希望將數(shù)組的元素及其順序與另一個(gè)數(shù)組及其元素進(jìn)行比較,但array的equals()方法不這樣做,而是引用比較,僅當(dāng)兩個(gè)變量都指向同一個(gè)數(shù)組對(duì)象時(shí)才返回true,如下例所示。但是不用擔(dān)心,Arrays類用equals()和deepEquals()方法來比較Java中的一維數(shù)組和多維數(shù)組元素。您可以通過以下示例推斷出相同的理解:

  您可以看到盡管元素及其順序相同,第一條語句是假的,因?yàn)椤?=”運(yùn)算符僅在兩個(gè)變量都指向同一數(shù)組時(shí)才返回真,這是第二次相等性檢查的情況。同樣,equals()方法也模擬了==運(yùn)算符的行為,因?yàn)閿?shù)組不會(huì)重寫對(duì)象的equals()方法,其默認(rèn)行為是基于相同的引用來決定相等性。Arrays.equals()是檢查兩個(gè)數(shù)組在Java中是否相等的正確方法。為此,你應(yīng)該一直使用它。


  8.Java程序員應(yīng)該習(xí)慣使用deepEquals()方法來檢查兩個(gè)多維數(shù)組的相等性,因?yàn)锳rrays.equals()方法不執(zhí)行多維比較。以下是檢查Java中多維數(shù)組相等性的示例:

  9.使用java時(shí),你需要多次在靜態(tài)數(shù)組與動(dòng)態(tài)數(shù)組之間進(jìn)行轉(zhuǎn)換。


  10.在Java中有幾種初始化數(shù)組的方法。你也可以在不初始化的情況下創(chuàng)建它們,在這種情況下,所有存儲(chǔ)桶都將保持元素類型的默認(rèn)值,例如,如果你創(chuàng)建一個(gè)空數(shù)組并且沒有初始化它,則所有存儲(chǔ)桶都將保持為零,因?yàn)檫@是Java中整數(shù)變量的默認(rèn)值。類似地,布爾數(shù)組默認(rèn)使用false值初始化,String數(shù)組使用空值初始化。如果您事先知道這些值,則可以在創(chuàng)建時(shí)初始化數(shù)組,如下所示:

  11.一個(gè)額外的提示是,array與arraylist有很大的不同,后者是一個(gè)動(dòng)態(tài)數(shù)組,它可以根據(jù)需要調(diào)整自身的大小。另一方面,創(chuàng)建后不能更改數(shù)組的大小。除了這一事實(shí)之外,這兩個(gè)類之間還有幾個(gè)不同之處,例如ARAYLIST是Java集合框架的一部分,但數(shù)組不是。


  這是關(guān)于Java中數(shù)組數(shù)據(jù)結(jié)構(gòu)的一些要點(diǎn)的列表。使用數(shù)組來保存相同類型的元素,例如整數(shù)、字符串或?qū)ο?,但不能混合它們,例如Java數(shù)組不能同時(shí)包含整數(shù)和字符串,在編譯時(shí)是錯(cuò)誤的,但對(duì)于對(duì)象,如果編譯器允許,它將在運(yùn)行時(shí)拋出arraystoreException。同樣,如果知道索引,數(shù)組也是用于訪問元素的快速數(shù)據(jù)結(jié)構(gòu)之一


  以上就是長(zhǎng)沙牛耳教育java培訓(xùn)機(jī)構(gòu)小編介紹的“Java中的數(shù)組數(shù)據(jù)結(jié)構(gòu)需要了解的要點(diǎn)”的內(nèi)容,希望對(duì)大家有幫助,更多java最新資訊請(qǐng)繼續(xù)關(guān)注長(zhǎng)沙牛耳教育java培訓(xùn)機(jī)構(gòu)官網(wǎng),每天會(huì)有精彩內(nèi)容分享與你。

培訓(xùn)啦提醒您:交易時(shí)請(qǐng)核實(shí)對(duì)方資質(zhì),對(duì)于過大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險(xiǎn),謹(jǐn)防上當(dāng)。