精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Java 數組優秀指南,快收藏讓它吃灰

開發 后端
兩年前,我甚至寫過一篇文章,吐槽數組在 Java 中挺雞肋的,因為有 List 誰用數組啊,現在想想那時候的自己好幼稚,好可笑。因為我只看到了表面現象,實際上呢,List 的內部仍然是通過數組實現的。

 [[331325]]

兩年前,我甚至寫過一篇文章,吐槽數組在 Java 中挺雞肋的,因為有 List 誰用數組啊,現在想想那時候的自己好幼稚,好可笑。因為我只看到了表面現象,實際上呢,List 的內部仍然是通過數組實現的,比如說 ArrayList,在它的源碼里可以看到下面這些內容:

 

  1. /** 
  2.  * The array buffer into which the elements of the ArrayList are stored. 
  3.  * The capacity of the ArrayList is the length of this array buffer. Any 
  4.  * empty ArrayList with elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA 
  5.  * will be expanded to DEFAULT_CAPACITY when the first element is added. 
  6.  */ 
  7. transient Object[] elementData; // non-private to simplify nested class access 
  8.  
  9. /** 
  10.  * The size of the ArrayList (the number of elements it contains). 
  11.  * 
  12.  * @serial 
  13.  */ 
  14. private int size

數組在 Java 中,必須算是核心,神一般的存在。

01、什么是數組

按照 Javadoc 給出的解釋,數組是一個對象,它包含了一組固定數量的元素,并且這些元素的類型是相同的。數組會按照索引的方式將元素放在指定的位置上,意味著我們可以通過索引來訪問到這些元素。在 Java 中,索引是從 0 開始的。

我們可以將數組理解為一個個整齊排列的單元格,每個單元格里面存放著一個元素。

數組元素的類型可以是基本數據類型(比如說 int、double),也可以是引用數據類型(比如說 String),包括自定義類型的對象。

了解了數組的定義后,讓我們來深入地研究一下數組的用法。

在 Java 中,數組的聲明方式有兩種。

先來看第一種:

 

  1. int[] anArray; 

再來看第二種:

 

  1. int anOtherArray[]; 

不同之處就在于中括號的位置,是緊跟類型,還是放在變量名的后面。前者比后者的使用頻率更高一些。

接下來就該看看怎么初始化數組了,同樣有多種方式可以初始化數組,比如說最常見的是:

 

  1. int[] anArray = new int[10]; 

使用了 new 關鍵字,對吧?這就意味著數組的確是一個對象。然后,在方括號中指定了數組的長度,這是必須的。

這時候,數組中的每個元素都會被初始化為默認值,int 類型的就為 0,Object 類型的就為 null。

另外,還可以使用大括號的方式,直接初始化數組中的元素:

 

  1. int anOtherArray[] = new int[] {1, 2, 3, 4, 5}; 

這時候,數組的元素分別是 1、2、3、4、5,索引依次是 0、1、2、3、4。

02、訪問數組

前面提到過,可以通過索引來訪問數組的元素,就像下面這樣:

 

  1. anArray[0] = 10; 
  2. System.out.println(anArray[0]); 

通過數組的變量名,加上中括號,加上元素的索引,就可以訪問到數組,通過“=”操作符進行賦值。

如果索引的值超出了數組的界限,就會拋出 ArrayIndexOutOfBoundException,關于這方面的知識,我之前特意寫過一篇文章,如果你感興趣的話,可以跳轉過去看看。

為什么會發生ArrayIndexOutOfBoundsException

我覺得原因挺有意思的。

既然數組的索引是從 0 開始,那就是到數組的 length - 1 結束,不要使用超出這個范圍內的索引訪問數組,就不會拋出數組越界的異常了。

03、遍歷數組

當數組的元素非常多的時候,逐個訪問數組就太辛苦了,所以需要通過遍歷的方式。

第一種,使用 for 循環:

 

  1. int anOtherArray[] = new int[] {1, 2, 3, 4, 5}; 
  2. for (int i = 0; i < anOtherArray.length; i++) { 
  3.     System.out.println(anOtherArray[i]); 

通過 length 屬性獲取到數組的長度,然后索引從 0 開始遍歷,就得到了數組的所有元素。

第二種,使用 for-each 循環:

 

  1. for (int element : anOtherArray) { 
  2.     System.out.println(element); 

如果不需要關心索引的話(意味著不需要修改數組的某個元素),使用 for-each 遍歷更簡潔一些。當然,也可以使用 while 和 do-while 循環。

04、可變參數

可變參數用于將任意數量的參數傳遞給方法:

 

  1. void varargsMethod(String... varargs) {} 

varargsMethod() 方法可以傳遞任意數量的字符串參數,可以是 0 個或者 N 個,本質上,可變參數就是通過數組實現的,為了證明這一點,我們可以通過 jad 反編譯一下字節碼:

 

  1. public class VarargsDemo 
  2.  
  3.     public VarargsDemo() 
  4.     { 
  5.     } 
  6.  
  7.     transient void varargsMethod(String as[]) 
  8.     { 
  9.     } 

所以我們其實可以直接將數組作為參數傳遞給可變參數的方法:

 

  1. VarargsDemo demo = new VarargsDemo(); 
  2. String[] anArray = new String[] {"沉默王二""一枚有趣的程序員"}; 
  3. demo.varargsMethod(anArray); 

也可以直接傳遞多個字符串,通過逗號隔開的方式:

 

  1. demo.varargsMethod("沉默王二""一枚有趣的程序員"); 

05、把數組轉成 List

List 封裝了很多常用的方法,方便我們對集合進行一些操作,而如果直接操作數組的話,多有不便,因此有時候我們需要把數組轉成 List。

比較原始的方式,就是通過遍歷數組的方式,一個個將數組添加到 List 中。

 

  1. int[] anArray = new int[] {1, 2, 3, 4, 5}; 
  2.  
  3. List<Integer> aList = new ArrayList<>(); 
  4. for (int element : anArray) { 
  5.     aList.add(element); 

更優雅的方式是通過 Arrays 類的 asList() 方法:

 

  1. List<Integer> aList = Arrays.asList(anArray); 

但需要注意的是,該方法返回的 ArrayList 并不是 java.util.ArrayList,它其實是 Arrays 類的一個內部類:

 

  1. private static class ArrayList<E> extends AbstractList<E> 
  2.         implements RandomAccess, java.io.Serializable{} 

如果需要添加元素或者刪除元素的話,最好把它轉成 java.util.ArrayList。

 

  1. new ArrayList<>(Arrays.asList(anArray)); 

06、把數組轉成 Stream

Java 8 新增了 Stream 流的概念,這就意味著我們也可以將數組轉成 Stream 進行操作,而不是 List。

 

  1. String[] anArray = new String[] {"沉默王二""一枚有趣的程序員""好好珍重他"}; 
  2. Stream<String> aStream = Arrays.stream(anArray); 

也可以直接對數組的元素進行剪輯,通過指定索引的方式:

 

  1. Stream<String> anotherStream = Arrays.stream(anArray, 1, 3); 

結果包含"一枚有趣的程序員"和"好好珍重他",1 這個索引位置包括,3 這個索引位置不包括。

07、數組排序

Arrays 類提供了一個 sort() 方法,可以對數組進行排序。

  • 基本數據類型按照升序排列
  • 實現了 Comparable 接口的對象按照 compareTo() 的排序

來看第一個例子:

 

  1. int[] anArray = new int[] {5, 2, 1, 4, 8}; 
  2. Arrays.sort(anArray); 

排序后的結果如下所示:

 

  1. [1, 2, 4, 5, 8] 

來看第二個例子:

 

  1. String[] yetAnotherArray = new String[] {"A""E""Z""B""C"}; 
  2. Arrays.sort(yetAnotherArray, 1, 3, 
  3.                 Comparator.comparing(String::toString).reversed()); 

只對 1-3 位置上的元素進行反序,所以結果如下所示:

 

  1. [A, Z, E, B, C] 

08、數組搜索

有時候,我們需要從數組中查找某個具體的元素,比較直接的方式就是通過遍歷的方式:

 

  1. int[] anArray = new int[] {5, 2, 1, 4, 8}; 
  2. for (int i = 0; i < anArray.length; i++) { 
  3.     if (anArray[i] == 4) { 
  4.         System.out.println("找到了 " + i); 
  5.         break; 
  6.     } 

上例中從數組中查詢元素 4,找到后通過 break 關鍵字退出循環。

如果數組提前進行了排序,就可以使用二分查找法,這樣效率就會更高一些。Arrays.binarySearch() 方法可供我們使用,它需要傳遞一個數組,和要查找的元素。

 

  1. int[] anArray = new int[] {1, 2, 3, 4, 5}; 
  2. int index = Arrays.binarySearch(anArray, 4); 

09、總結

除了一維數組,還有二維數組,但說實話,二維數組不太常用,這里就不再介紹了,感興趣的話,可以嘗試打印以下楊輝三角。

這篇文章,我們介紹了 Java 數組的基本用法和一些高級用法,我想小伙伴們應該已經完全掌握了。

責任編輯:華軒 來源: 沉默王二
相關推薦

2020-06-24 09:38:17

前端開發工具

2021-01-19 07:51:12

JavaScriptJavac++

2023-09-13 16:55:42

JavaScript數組

2021-01-26 05:04:47

屬性FlexBox用法

2021-02-01 07:55:37

JS 數組元素

2018-07-24 18:07:33

人工智能ARVR

2018-09-27 19:10:17

ARVRAI

2014-06-26 14:09:05

2022-08-05 09:15:27

數據治理

2018-09-11 12:54:53

面試HadoopKafka

2023-06-09 08:11:32

2021-03-02 11:40:17

Windows微軟技巧

2021-07-19 10:13:41

Figma插件工具

2020-04-14 17:15:17

CSS工具Web開發

2018-05-08 14:58:07

戴爾

2020-04-17 10:23:43

TDD測試驅動

2016-09-21 22:12:43

網絡爬蟲Java開源

2021-03-26 09:49:11

運維架構技術

2023-11-27 19:22:24

Python庫編程語言
點贊
收藏

51CTO技術棧公眾號

亚洲天堂av一区| 国产精品福利在线观看播放| 一道本成人在线| 亚洲精品8mav| 黄色av免费观看| 久久久一二三| 久99九色视频在线观看| av电影网站在线观看| 亚洲性视频在线| 欧美最猛黑人xxxxx猛交| 8x8ⅹ国产精品一区二区二区| 欧美成人片在线| 爱啪啪综合导航| 激情综合婷婷| 性做久久久久久免费观看| 色女孩综合网| 欧美自拍第一页| 麻豆91精品91久久久的内涵| 97超视频免费观看| 成人性生活毛片| 欧美精品第一区| 欧美成人欧美edvon| 男女污污的视频| 日韩脚交footjobhd| 亚洲天堂福利av| 午夜老司机精品| 午夜视频福利在线| 国产黑丝在线一区二区三区| 国产在线高清精品| 欧美黄色一级大片| 99riav国产精品| 欧美激情免费观看| 破处女黄色一级片| 久久亚洲在线| 在线看日韩欧美| 欧美老熟妇乱大交xxxxx| 国产乱人伦精品一区| 91精品国产综合久久久蜜臀粉嫩| 美女网站免费观看视频| 色呦呦在线看| 亚洲精品成人天堂一二三| 亚洲欧美精品| 国产一级片在线| 国产日产欧美一区二区视频| 免费h精品视频在线播放| 天堂在线观看av| 成人福利视频网站| 国产乱子伦精品| 亚洲乱码精品久久久久..| 国产iv一区二区三区| 亚洲最大福利视频| 国产视频一区二区三区四区五区| 麻豆国产91在线播放| 国产欧美日韩中文| 一区二区精品视频在线观看| 久久99精品国产.久久久久| 国产精品视频白浆免费视频| 中文字幕视频在线播放| 久久精品72免费观看| 成人免费午夜电影| 精品久久在线观看| 成人免费观看男女羞羞视频| 国产精品国产三级国产专区53| 内射后入在线观看一区| proumb性欧美在线观看| 久久久久久久久久码影片| 欧美成人免费| 国产精品色一区二区三区| 亚洲蜜桃av| 在线播放免费av| 亚洲成av人片观看| 日本在线视频www| 国产精品久久久久77777丨| 91精品国产色综合久久不卡蜜臀| 美女露出粉嫩尿囗让男人桶| 日本亚洲不卡| 中文字幕9999| 久久免费小视频| 美女精品在线| 亚洲精品免费一区二区三区| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 久久综合网色—综合色88| 午夜午夜精品一区二区三区文| 免费黄色电影在线观看| 亚洲午夜在线观看视频在线| 亚洲爆乳无码专区| 国内精品视频| 亚洲男人的天堂网站| 99久久久无码国产精品不卡| 亚洲欧洲日本mm| 国产精品视频男人的天堂| www日本高清| 久久美女高清视频| 男人天堂成人网| 偷拍自拍在线看| 欧美一级国产精品| 自拍偷拍亚洲天堂| 午夜久久影院| 国产精品高潮呻吟久久av无限 | 欧美激情办公室videoshd| 一区二区三区日本| 88av.com| 欧美三级午夜理伦三级小说| 91网上在线视频| 久久久久国产精品视频| 99re国产在线播放| 久久久精品视频网站| 精品一区二区免费在线观看| 久久久99爱| 在线看女人毛片| 欧美亚男人的天堂| 欧美无人区码suv| 亚洲精品97| 国产精品嫩草影院久久久| 人妻丰满熟妇av无码区hd| 中文字幕制服丝袜成人av| 99精品免费在线观看| av一级亚洲| 久久久成人精品视频| 无码人妻精品一区二区三区9厂 | 午夜在线播放视频欧美| 亚洲自拍av在线| 午夜小视频在线| 日韩欧美在线免费观看| 99热超碰在线| 午夜国产精品视频免费体验区| 国产精品视频一区二区高潮| 精品无人乱码| 色综合一区二区三区| www.com日本| 亚洲一区二区三区无吗| 国产日韩欧美91| 成人免费视频| 在线观看国产一区二区| 极品人妻一区二区三区| 99精品国产福利在线观看免费| 亚洲www视频| 黄色片网站在线观看| 欧美日韩精品一区二区三区四区| 中字幕一区二区三区乱码| 模特精品在线| 免费久久久一本精品久久区| 男女羞羞在线观看| 亚洲国产天堂久久综合| 日本三级理论片| gogogo免费视频观看亚洲一| 很污的网站在线观看| 国产精品115| 2024亚洲男人天堂| 免费观看毛片网站| 亚洲午夜在线电影| 在线中文字日产幕| 国产美女精品| 欧美日韩在线一区二区三区| 国产精品毛片久久久久久久久久99999999 | 亚洲丝袜精品丝袜在线| 三级av免费看| 极品少妇一区二区三区| 精品视频一区二区三区四区| 欧美天堂视频| 日韩在线视频免费观看| 国产精品区在线观看| 一区二区高清在线| 加勒比精品视频| 日韩电影在线一区| 一区二区三区四区欧美| 亚洲国产高清在线观看| 国内揄拍国内精品少妇国语| 欧美日本韩国一区二区| 欧美日韩三级一区二区| 国产av 一区二区三区| 99视频精品在线| 国产裸体免费无遮挡| 国产精品成人a在线观看| 国产精品国色综合久久| 第84页国产精品| 日韩在线视频一区| 亚洲男人天堂久久| 日本精品一区二区三区四区的功能| 国产一区在线观看免费| 成人动漫av在线| 丁香婷婷激情网| 欧美日韩一区二区国产| 欧美日韩国产不卡在线看| 电影一区中文字幕| 91精品国产高清| 午夜视频在线免费观看| 亚洲国产日韩欧美在线99| 亚洲性猛交富婆| 一区二区日韩电影| 日本二区在线观看| 成人性生交大片免费看视频在线| 久久久久国产精品熟女影院| 欧美日韩精品| 日韩福利一区二区三区| 成人精品毛片| 国产在线不卡精品| 国产欧美一区二区三区精品酒店| 欧美乱大交xxxxx另类电影| 每日更新在线观看av| 日韩午夜精品视频| 日韩欧美国产另类| 精品福利一区二区| 美国黄色小视频| 中文字幕精品—区二区四季| 在线观看免费视频黄| 中文日产幕无线码一区二区| 成人午夜激情影院| 午夜欧美福利视频| 在线一区免费观看| 人人妻人人澡人人爽欧美一区 | 男女h黄动漫啪啪无遮挡软件| 久久av电影| 精品国产一二| 风间由美性色一区二区三区四区| 国产精品久久色| 中文字幕在线官网| 97在线视频一区| 黄色在线论坛| 中日韩午夜理伦电影免费| 亚洲av成人无码网天堂| 日韩美女一区二区三区四区| 国产精品永久久久久久久久久| 在线欧美一区二区| av黄色在线看| 精品久久久中文| 久久9999久久免费精品国产| 亚洲激情中文1区| 久久成人小视频| 国产精品久久精品日日| 蜜乳av中文字幕| 久久人人97超碰com| 激情综合丁香五月| 9久草视频在线视频精品| 中文字幕在线播放一区二区| 国产尤物一区二区| 日本不卡一区在线| 久久99日本精品| 九色porny自拍| 麻豆精品视频在线观看| 手机看片一级片| 美女一区二区三区在线观看| 天堂一区在线观看| 久久精品国产精品亚洲综合| 天天干天天色天天干| 精品一区二区三区在线观看 | 欧美成人小视频| av黄在线观看| 久久久久久久一| 久久影院午夜精品| 欧美怡红院视频一区二区三区| 伊人久久国产| 国产精品久久久久久久午夜 | 久久草.com| 亚洲人成网www| 日韩欧美亚洲精品| 久久中文视频| 无码毛片aaa在线| 午夜亚洲福利| 国产精品秘入口18禁麻豆免会员| 丝袜脚交一区二区| 亚洲怡红院在线| 国产99久久久国产精品免费看| 99re这里只有| 国产欧美一区二区精品性| 任我爽在线视频| 亚洲综合色婷婷| 日韩三级一区二区| 欧美精品电影在线播放| 日本激情一区二区三区| 亚洲欧美激情另类校园| 女女色综合影院| 久久久久久午夜| 九色成人搞黄网站| 99视频国产精品免费观看| 清纯唯美亚洲经典中文字幕| 午夜精品亚洲一区二区三区嫩草 | 国产精品久久久久久婷婷天堂 | 久久99九九99精品| 最新版天堂资源在线| 久久久久久久久97黄色工厂| 男女性高潮免费网站| 精品日韩视频在线观看| 中文无码av一区二区三区| 日韩欧美一级特黄在线播放| 男女污污视频在线观看| 精品国产一区二区三区久久狼5月 精品国产一区二区三区久久久狼 精品国产一区二区三区久久久 | 欧美视频www| 精品久久久视频| 91亚洲精品国偷拍自产在线观看 | 69久久精品| 久久久久久久久久久人体 | 日本欧美在线看| www.美色吧.com| 国产精品天干天干在观线 | 欧美日韩一区不卡| 天天操天天干天天爽| 色妞久久福利网| 国产污视频在线播放| 成人性生交大片免费看视频直播| 欧洲精品一区| 成人午夜免费在线视频| 蜜臀91精品一区二区三区| 娇妻高潮浓精白浆xxⅹ| 亚洲人成精品久久久久| 中文字幕手机在线视频| 欧美成人国产一区二区| 91se在线| 国产91亚洲精品| 日韩欧美国产大片| 免费观看亚洲视频| 麻豆国产欧美一区二区三区| 欧美图片一区二区| 亚洲风情在线资源站| 国产手机精品视频| 最好看的2019年中文视频| 久久毛片亚洲| 久久精品久久精品国产大片| 欧美精品一级| 中文国产在线观看| 中文字幕在线不卡国产视频| 最近中文字幕免费在线观看| 亚洲人在线视频| 波多视频一区| 久久国产精品亚洲va麻豆| 亚洲激精日韩激精欧美精品| wwwxxxx在线观看| 亚洲欧美电影一区二区| 国产精品爽爽久久久久久| 中文字幕亚洲情99在线| 国产精品毛片久久久久久久久久99999999| 蜜桃av久久久亚洲精品| 亚洲精品韩国| 国产又黄又粗又猛又爽的视频| 亚洲国产成人porn| 高潮毛片7777777毛片| 精品中文字幕在线| 99精品在免费线中文字幕网站一区| 欧美 国产 精品| 国产久卡久卡久卡久卡视频精品| 国产午夜手机精彩视频| 日韩一级在线观看| a级影片在线| 99国产视频| 精品91在线| 久久午夜夜伦鲁鲁片| 疯狂欧美牲乱大交777| 天堂а√在线8种子蜜桃视频| 欧美在线亚洲一区| 欧美日韩精品在线一区| 亚洲黄色a v| 中文字幕一区二| 亚洲av无码乱码国产麻豆| 国外成人在线视频| 久久365资源| 人人爽人人av| **欧美大码日韩| 亚洲精品国产精品国| 97久久精品视频| 欧美日韩播放| 天堂中文av在线| 一区二区成人在线| 性xxxx18| 国产精品一区=区| 911精品美国片911久久久| 国产香蕉精品视频| 色婷婷久久久久swag精品| 日本不卡不卡| 99在线视频播放| 久久久久久自在自线| 国产午夜精品理论片在线| 欧美成人精品1314www| 国产精品av一区二区三区| 一区二区三区四区国产| 成人在线综合网站| 亚洲成人av网址| 欧美激情精品久久久久久久变态| 任你躁在线精品免费| 中文字幕22页| 天天综合日日夜夜精品| 91在线视频| 国产福利不卡| 免费高清成人在线| 国产性生活网站| 在线视频欧美性高潮| 一区二区三区自拍视频| 亚洲黄色a v| 亚洲成人av福利| 午夜在线观看视频| 精品久久中出| 国产麻豆午夜三级精品| 亚洲欧美自拍视频| 欧美激情精品久久久久久变态| 欧美肉体xxxx裸体137大胆| 色悠悠在线视频| 欧美日韩一级片网站| 亚洲风情在线资源| 国产一级做a爰片久久毛片男| 国产精品你懂的| 亚洲欧美综合在线观看|