今天就跟大家聊聊有關(guān)java中的list和arraylist有什么區(qū)別,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
為察哈爾右翼中旗等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及察哈爾右翼中旗網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、察哈爾右翼中旗網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
區(qū)別:
List是一個(gè)接口,而ArrayList是List接口的一個(gè)實(shí)現(xiàn)類。ArrayList類繼承并實(shí)現(xiàn)了List接口。
因此,List接口不能被構(gòu)造,也就是我們說的不能創(chuàng)建實(shí)例對(duì)象,但是我們可以像下面那樣為L(zhǎng)ist接口創(chuàng)建一個(gè)指向自己的對(duì)象引用,而ArrayList實(shí)現(xiàn)類的實(shí)例對(duì)象就在這充當(dāng)了這個(gè)指向List接口的對(duì)象引用。
Animals.java public abstract class Animals { //動(dòng)物名字 String name; //動(dòng)物叫聲 public void shout(){ System.out.println("叫聲----"); } } Dog.java public class Dog extends Animals { //狗類獨(dú)有的方法 public void guard(){ System.out.println("狗獨(dú)有的看門本領(lǐng)"); } } Test.java public class Test { public static void main(String[] args) throws ClassNotFoundException { Animals a1 = new Animals(); Animals a2 = new Dog(); } }
List list;//正確,list = null; List list = new List();//是錯(cuò)誤的用法
List list = new ArrayList();
這句創(chuàng)建了一個(gè)ArrayList實(shí)現(xiàn)類的對(duì)象后把它上溯到了List接口。此時(shí)它就是一個(gè)List對(duì)象了,它有些ArrayList類具有的,但是List接口沒有的屬性和方法,它就不能再用了,而
ArrayList list=newArrayList();
創(chuàng)建一對(duì)象則保留了ArrayList的所有屬性和方法。
Test.java public class Test { public static void main(String[] args) throws ClassNotFoundException { Animals a2 = new Dog(); a2.shout(); a2.guard(); } }
父類不能再調(diào)用父類出現(xiàn)而子類沒有出現(xiàn)的方法。否則會(huì)編譯出錯(cuò)。
如果是下面這個(gè)樣子的:
List a=new ArrayList();
則a擁有List的所有屬性和方法,不會(huì)擁有其實(shí)現(xiàn)類ArrayList的獨(dú)有的屬性和方法。
如果List與ArrayList中有相同的屬性(如int i),有相同的方法(如void f()),
則a.i是調(diào)用了List中的i,a.f()是調(diào)用了ArrayList中的f();
問題的關(guān)鍵:
為什么要用 List list = new ArrayList()
而不用 ArrayList alist = new ArrayList()
呢?
問題就在于List接口有多個(gè)實(shí)現(xiàn)類,現(xiàn)在你用的是ArrayList,也許哪一天你需要換成其它的實(shí)現(xiàn)類,如:
LinkedList或者Vector等等,這時(shí)你只要改變這一行就行了: List list = new LinkedList();
其它使用了list地方的代碼根本不需要改動(dòng)。
假設(shè)你開始用ArrayList alist = new ArrayList()
, 這下你有的改了,特別是如果你使用了ArrayList實(shí)現(xiàn)類特有的方法和屬性。
看完上述內(nèi)容,你們對(duì)java中的list和arraylist的區(qū)別有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。
網(wǎng)站欄目:java中的list和arraylist有什么區(qū)別
本文URL:http://chinadenli.net/article26/jggejg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、網(wǎng)站導(dǎo)航、網(wǎng)站設(shè)計(jì)公司、響應(yīng)式網(wǎng)站、微信小程序、網(wǎng)頁設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)