日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java数组设置结束_Java 数组最佳指南,快收藏让它吃灰

發布時間:2024/7/23 java 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java数组设置结束_Java 数组最佳指南,快收藏让它吃灰 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

/**

*?The?array?buffer?into?which?the?elements?of?the?ArrayList?are?stored.

*?The?capacity?of?the?ArrayList?is?the?length?of?this?array?buffer.?Any

*?empty?ArrayList?with?elementData?==?DEFAULTCAPACITY_EMPTY_ELEMENTDATA

*?will?be?expanded?to?DEFAULT_CAPACITY?when?the?first?element?is?added.

*/

transient?Object[]?elementData;?//?non-private?to?simplify?nested?class?access

/**

*?The?size?of?the?ArrayList?(the?number?of?elements?it?contains).

*

*?@serial

*/

private?int?size;

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

01、什么是數組

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

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

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

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

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

先來看第一種:

int[]?anArray;

再來看第二種:

int?anOtherArray[];

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

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

int[]?anArray?=?new?int[10];

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

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

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

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

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

02、訪問數組

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

anArray[0]?=?10;

System.out.println(anArray[0]);

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

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

我覺得原因挺有意思的。

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

03、遍歷數組

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

第一種,使用 for 循環:

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

for?(int?i?=?0;?i?

System.out.println(anOtherArray[i]);

}

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

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

for?(int?element?:?anOtherArray)?{

System.out.println(element);

}

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

04、可變參數

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

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

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

public?class?VarargsDemo{

public?VarargsDemo(){

}

transient?void?varargsMethod(String?as[]){

}

}

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

VarargsDemo?demo?=?new?VarargsDemo();

String[]?anArray?=?new?String[]?{"沉默王二",?"一枚有趣的程序員"};

demo.varargsMethod(anArray);

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

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

05、把數組轉成 List

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

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

int[]?anArray?=?new?int[]?{1,?2,?3,?4,?5};

List?aList?=?new?ArrayList<>();

for?(int?element?:?anArray)?{

aList.add(element);

}

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

List?aList?=?Arrays.asList(anArray);

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

private?static?class?ArrayList?extends?AbstractList

implements?RandomAccess,?java.io.Serializable{}

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

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

06、把數組轉成 Stream

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

String[]?anArray?=?new?String[]?{"沉默王二",?"一枚有趣的程序員",?"好好珍重他"};

Stream?aStream?=?Arrays.stream(anArray);

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

Stream?anotherStream?=?Arrays.stream(anArray,?1,?3);

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

07、數組排序

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

基本數據類型按照升序排列

實現了 Comparable 接口的對象按照 compareTo() 的排序

來看第一個例子:

int[]?anArray?=?new?int[]?{5,?2,?1,?4,?8};

Arrays.sort(anArray);

排序后的結果如下所示:

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

來看第二個例子:

String[]?yetAnotherArray?=?new?String[]?{"A",?"E",?"Z",?"B",?"C"};

Arrays.sort(yetAnotherArray,?1,?3,

Comparator.comparing(String::toString).reversed());

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

[A,?Z,?E,?B,?C]

08、數組搜索

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

int[]?anArray?=?new?int[]?{5,?2,?1,?4,?8};

for?(int?i?=?0;?i?

if?(anArray[i]?==?4)?{

System.out.println("找到了?"?+?i);

break;

}

}

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

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

int[]?anArray?=?new?int[]?{1,?2,?3,?4,?5};

int?index?=?Arrays.binarySearch(anArray,?4);

09、總結

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

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

我是沉默王二,一枚有趣的程序員。如果覺得文章對你有點幫助,請微信搜索「 沉默王二 」第一時間閱讀。

本文 GitHub 已經收錄,有大廠面試完整考點,歡迎 Star。

原創不易,莫要白票,請你為本文點個贊吧,這將是我寫作更多優質文章的最強動力。

總結

以上是生活随笔為你收集整理的java数组设置结束_Java 数组最佳指南,快收藏让它吃灰的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。