這篇文章主要介紹“怎么使用Java數組”,在日常操作中,相信很多人在怎么使用Java數組問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么使用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,關于這方面的知識,我之前特意寫過一篇文章,如果你感興趣的話,可以跳轉過去看看。
為什么會發生ArrayIndexOutOfBoundsException
我覺得原因挺有意思的。
既然數組的索引是從 0 開始,那就是到數組的 length - 1 結束,不要使用超出這個范圍內的索引訪問數組,就不會拋出數組越界的異常了。
03、遍歷數組
當數組的元素非常多的時候,逐個訪問數組就太辛苦了,所以需要通過遍歷的方式。
第一種,使用 for 循環:
int anOtherArray[] = new int[] {1, 2, 3, 4, 5}; for (int i = 0; i < anOtherArray.length; 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 < anArray.length; 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);
到此,關于“怎么使用Java數組”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注創新互聯-成都網站建設公司網站,小編會繼續努力為大家帶來更多實用的文章!
當前名稱:怎么使用Java數組-創新互聯
本文來源:http://vcdvsql.cn/article14/ggcge.html
成都網站建設公司_創新互聯,為您提供定制開發、小程序開發、動態網站、網站設計公司、網站設計、建站公司
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯