精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

免费看91视频| 相泽南亚洲一区二区在线播放| 久久久久久av无码免费网站| 国产精品xxxav免费视频| 黑人与娇小精品av专区| 色噜噜狠狠色综合网| 国产人妻精品一区二区三| 亚洲精品色图| 日韩在线视频网站| 熟妇高潮一区二区| aaaa欧美| 欧美日韩在线影院| 一本色道久久88亚洲精品综合| 婷婷视频在线观看| 狠狠色丁香婷婷综合久久片| 97在线看福利| 中文字幕在线观看2018| 同性恋视频一区| 日韩午夜av一区| 91香蕉视频导航| 日本午夜大片a在线观看| 中文字幕中文乱码欧美一区二区| 国产一区二区黄色| 国产精品亚洲lv粉色| 久久久久国产精品一区三寸| 色综合久久88| 91大神福利视频| 亚洲裸色大胆大尺寸艺术写真| 日韩一区二区三区在线| 黄色高清无遮挡| 国产亚av手机在线观看| ...av二区三区久久精品| 欧洲亚洲一区二区| 天堂av在线资源| 成人免费看的视频| 97免费资源站| 亚洲视频中文字幕在线观看| 蜜桃av一区| 91av网站在线播放| 日本熟伦人妇xxxx| 欧美日韩影院| 美日韩丰满少妇在线观看| 国产又粗又猛又爽又黄的视频小说 | 二区三区精品| 欧美日韩亚州综合| 国产成人精品免高潮费视频| 毛片aaaaa| 在线精品视频在线观看高清| 深夜福利国产精品| 18精品爽国产三级网站| 精品欧美久久| 夜夜嗨av一区二区三区四区 | 午夜精品一区二区三区在线| 国产盗摄一区二区三区在线| 久久久久久久久99精品大| 中文字幕精品在线视频| 国产一区二区三区四区在线| 国产一区二区三区四区二区| 亚洲欧美在线免费| 自拍偷拍亚洲天堂| 欧美日韩国产高清电影| 国产亚洲精品高潮| 国产第一页精品| 爽成人777777婷婷| 久久资源免费视频| 久草网站在线观看| 亚洲国产免费看| 欧美一区第一页| 色av性av丰满av| 人人精品人人爱| 成人精品福利视频| 亚洲a视频在线观看| 成人黄色小视频在线观看| 国产伦精品一区| 日本中文字幕一区二区有码在线| 久久久久久日产精品| 图片区小说区区亚洲五月| 永久免费av片在线观看全网站| 成人欧美一区二区三区小说| 日本精品免费视频| 2020国产在线| 色婷婷精品大在线视频| 日本中文字幕影院| 日本高清久久| 精品一区二区亚洲| 亚洲а∨天堂久久精品2021| 99国产**精品****| 欧美国产日韩一区二区| 综合网在线观看| 卡一卡二国产精品 | 亚洲人亚洲人成电影网站色| 欧美极品少妇无套实战| 中文字幕在线视频久| 欧美视频精品在线观看| 爱情岛论坛亚洲自拍| 欧美a一欧美| 精品国产自在精品国产浪潮| 精品无码免费视频| 天堂在线亚洲视频| 99在线首页视频| 精品欧美不卡一区二区在线观看 | 制服国产精品| 蜜桃视频在线观看免费视频| 欧美日韩大陆在线| 美女又爽又黄免费| 久久精品一区二区不卡| 日韩av日韩在线观看| 国产强被迫伦姧在线观看无码| www.av亚洲| 日本三级中文字幕在线观看| 超碰一区二区| 精品欧美乱码久久久久久| 欧美精品日韩在线| 国产精品丝袜xxxxxxx| 2019国产精品视频| av在线播放网| 亚洲自拍偷拍九九九| 在线看免费毛片| 免费久久精品| 午夜精品一区二区三区在线视| 在线观看免费观看在线| 久久久综合激的五月天| avav在线播放| 超碰国产精品一区二页| 亚洲午夜av电影| 2020欧美日韩在线视频| 亚洲香蕉中文网| 99视频精品全国免费| 日韩av成人在线观看| 搡老岳熟女国产熟妇| 亚洲精品国产成人久久av盗摄| 亚洲一区二区三区四区五区xx| 婷婷精品在线观看| 午夜伦理精品一区| 日本成人动漫在线观看| 一区二区三区欧美日| 三区视频在线观看| 欧美电影三区| 国产在线精品成人一区二区三区| 黄色av网站在线看| 一本久道久久综合中文字幕| 亚洲精品中文字幕在线播放| 激情久久婷婷| 国产精品久久亚洲7777| 肉体视频在线| 日韩精品一区二区三区蜜臀| 欧美三级免费看| 国产毛片精品视频| 久久久久久久久网| 2023国产精华国产精品| 欧美黑人视频一区| 免费av网站在线播放| 亚洲成av人**亚洲成av**| 亚洲成年人av| 中日韩男男gay无套| 久久精品久久精品国产大片| 亚洲国产福利| 亚洲一区www| 中文字幕视频一区二区| 国产精品麻豆久久久| 亚洲欧美aaa| 亚洲一区 二区 三区| 999国产视频| 懂色av一区| 精品一区二区电影| 中文字幕日产av| 亚洲免费伊人电影| 自拍一级黄色片| 欧美日韩一区自拍| 免费国产一区二区| 草莓视频成人appios| 久久亚洲一区二区三区四区五区高 | 色爱区综合激月婷婷| 亚洲精品成人av久久| 久88久久88久久久| 国产无限制自拍| 国产欧美一区二区精品久久久| 国产精品久久久av| 中文字幕伦理免费在线视频 | 国产精品探花一区二区在线观看| 噜噜噜91成人网| 亚洲国产精品影视| 久久婷婷国产| 国产免费一区二区三区在线能观看 | 国产欧美自拍一区| 国产精品成人播放| a级网站在线播放| 日韩精品在线观看一区| 中文字幕av资源| 亚洲一二三区在线观看| 国产色视频一区二区三区qq号| 麻豆国产欧美一区二区三区| 日韩精品视频在线观看视频 | 日韩高清一区| 日韩免费av在线| 在线āv视频| 亚洲天堂免费观看| 午夜精品一区二区三| 欧美一a一片一级一片| 久久国产露脸精品国产| 欧美韩国日本一区| 国产草草浮力影院| 韩国三级电影一区二区| 国产男女在线观看| 欧美色123| 亚洲精品自在在线观看| 欧美成人一区在线观看| 成人午夜两性视频| 国产亚洲一区二区手机在线观看 | 亚洲视频电影图片偷拍一区| 精品国产亚洲一区二区麻豆| 91成人在线精品| 精品在线视频观看| 亚洲人成精品久久久久久| 国产精久久一区二区三区| 国产suv精品一区二区三区| 黄大色黄女片18第一次| 免费看的黄色欧美网站| 欧美日韩不卡在线视频| 亚洲理论电影网| 亚洲免费在线精品一区| 国产不卡av一区二区| 国产在线精品一区二区中文| 久久99成人| 成人天堂噜噜噜| 日韩成人在线电影| 国产精品丝袜白浆摸在线 | 亚洲综合第一页| 久久婷婷五月综合色丁香| 国产精品18久久久久久首页狼| 黄页网站大全在线免费观看| 欧美精品日韩www.p站| 日韩免费网站| 视频在线观看99| av在线中文| 最新的欧美黄色| 高清av在线| 一区二区三区视频免费| 国产最新视频在线| 亚洲天堂第一页| 岛国大片在线观看| 国产亚洲视频中文字幕视频| 人成免费电影一二三区在线观看| 亚洲黄一区二区| 天天综合永久入口| 亚洲免费电影在线观看| 深夜影院在线观看| 亚洲女人被黑人巨大进入| 牛牛影视精品影视| 国产亚洲aⅴaaaaaa毛片| 成人在线免费视频| 色妞一区二区三区| 麻豆tv在线| 欧美日韩国产91| h片在线观看视频免费免费| 97热精品视频官网| 欧美舌奴丨vk视频| 国产精品av在线| 亚洲成人高清| 91精品国产一区二区三区动漫| 亚洲日本va| 国产一区二区三区高清视频| 亚洲自拍都市欧美小说| 日本一区高清在线视频| 欧美亚洲在线日韩| 大桥未久一区二区三区| 亚洲免费观看| 日韩中文字幕免费在线 | 国产无套精品一区二区三区| 成人一区二区三区| 无码人妻精品一区二区中文| 欧美经典三级视频一区二区三区| 欧美性生交大片| 亚洲五月六月丁香激情| 激情视频网站在线观看| 欧美日韩高清影院| 色一情一乱一区二区三区| 亚洲视频专区在线| 国产激情在线| 欧美又大又硬又粗bbbbb| 四虎精品一区二区免费| 国产伦精品一区二区三区视频黑人| 亚洲区小说区图片区qvod按摩| 婷婷久久青草热一区二区 | 天天色棕合合合合合合合| 亚洲人成网站在线播| 老司机在线永久免费观看| 欧美精品久久久久久久| 欧美专区福利免费| 亚洲iv一区二区三区| 天堂一区二区三区四区| 亚洲一区二区三区免费看| 一区二区亚洲精品| 亚洲xxxx2d动漫1| 成人免费高清视频在线观看| 在线观看国产精品一区| 亚洲一区二区三区美女| 中文字幕精品无| 精品免费视频.| 免费a在线看| 欧美一区二粉嫩精品国产一线天| 国产一区二区三区免费观看在线| 久中文字幕一区| 中文在线日韩| 天天干天天干天天干天天干天天干| 国产成人免费视| www.com.av| 91福利国产成人精品照片| 亚洲国产综合网| 久久精品国产精品亚洲| 欧洲精品一区二区三区| 国产精品免费一区二区三区四区| 97精品视频在线看| 免费观看成人网| 久久综合视频网| www.av视频在线观看| 3atv在线一区二区三区| 北岛玲一区二区三区| 茄子视频成人在线| 国产一区福利| 欧美a级免费视频| 激情五月婷婷综合| 日本美女bbw| 91精品1区2区| 九色视频网站在线观看| 97av在线影院| 久久a爱视频| 日本阿v视频在线观看| 国产成人在线免费| 国产精品三区在线观看| 欧美高清性hdvideosex| 成年女人的天堂在线| 国产成人涩涩涩视频在线观看| 美女网站色精品尤物极品姐弟| av网站大全免费| 国产·精品毛片| 久久婷婷国产麻豆91| 欧美一区二区三区在线观看| 免费在线看黄| 成人亚洲欧美一区二区三区| 日韩精品1区| 亚洲高清免费在线观看| 中文子幕无线码一区tr| 中文字幕乱伦视频| 最近2019中文字幕在线高清 | 欧美视频中文一区二区三区在线观看| 日韩一区av| 秋霞午夜一区二区| 国产一区二区三区日韩精品 | 久久久久久久久久久影院| 日韩av在线免费| 欧美大片免费| 日韩免费中文专区| 美女爽到高潮91| 日韩激情小视频| 日韩免费视频线观看| 欧美人与牲禽动交com| 国产精品一区免费观看| 欧美视频亚洲视频| 2一3sex性hd| 色婷婷综合在线| 三级外国片在线观看视频| 成人av在线亚洲| 亚洲小说欧美另类婷婷| 亚洲永久无码7777kkk| 91国产视频在线观看| 蜜桃视频网站在线| 99在线影院| 日韩黄色免费电影| 神马午夜精品91| 亚洲激情电影中文字幕| 深夜视频一区二区| 经典三级在线视频| 99精品视频在线播放观看| 中文字幕91爱爱| 欧美国产在线电影| 国产乱码精品一区二区三区四区| 日韩欧美国产片| 午夜成人在线视频| 2021av在线| 风间由美久久久| 日韩激情中文字幕| 日本老熟俱乐部h0930| 亚洲精品一区中文| 99久久久国产| 91精品91久久久中77777老牛| аⅴ资源新版在线天堂| 久青草国产97香蕉在线视频| 久久久免费毛片| 国产高潮免费视频| 亚洲成av人片在线观看| www.91在线| 国产日韩欧美一区二区| 免费观看在线综合| 国产特黄大片aaaa毛片| 日韩中文字幕免费视频| 欧美做受69| 男插女视频网站| 欧美午夜精品免费| 老司机深夜福利在线观看|