Java中的數(shù)組基礎(chǔ)知識(shí)學(xué)習(xí)教程
數(shù)字
通常情況下,當(dāng)我們處理數(shù)字時(shí),使用原始數(shù)據(jù)類(lèi)型,如 byte,int,long,double 等。
示例
int i = 5000; float gpa = 13.65; byte mask = 0xaf;
然而,在開(kāi)發(fā)中,我們會(huì)遇到需要使用對(duì)象而不是原始數(shù)據(jù)類(lèi)型的情況。為了實(shí)現(xiàn)這個(gè), Java 為每個(gè)原始數(shù)據(jù)類(lèi)型提供包裝類(lèi)。
所有的包裝類(lèi) (Integer, Long, Byte, Double, Float, Short) 是抽象類(lèi) Number 的子類(lèi)。
這種包裝是由編譯器處理,這個(gè)過(guò)程稱(chēng)為裝箱。因此,當(dāng)一個(gè)原始數(shù)據(jù)類(lèi)型被使用,當(dāng)需要一個(gè)對(duì)象時(shí),編譯器將原始數(shù)據(jù)放入其包裝類(lèi)。同樣地,編譯器也能將對(duì)象取出返回到原始數(shù)據(jù)類(lèi)型。Number 是 java.lang 包的一部分。
這里是裝箱和拆箱的一個(gè)例子:
public class Test{ public static void main(String args[]){ Integer x = 5; // boxes int to an Integer object x = x + 10; // unboxes the Integer to a int System.out.println(x); } }
這將產(chǎn)生以下結(jié)果:
當(dāng) x 被分配整數(shù)值,則編譯器將整數(shù)放入箱中,因?yàn)?x 為整數(shù)對(duì)象。然后,x 被拆箱,以便它們可以被添加為整數(shù)。
Number 方法
以下是對(duì) Number 類(lèi)實(shí)現(xiàn)的所有子類(lèi)中實(shí)現(xiàn)的實(shí)例方法的列表:
SN | 方法描述 |
---|---|
1 | xxxValue() 這個(gè)Number對(duì)象的值轉(zhuǎn)換為XXX的數(shù)據(jù)類(lèi)型并返回 |
2 | compareTo() 把這個(gè)Number對(duì)象與參數(shù)做比較 |
3 | equals() 確定這個(gè)數(shù)字對(duì)象是否等于參數(shù) |
4 | valueOf() 返回一個(gè)Integer對(duì)象持有指定的原始值 |
5 | toString() 返回表示指定的int或整數(shù)的值的String對(duì)象 |
6 | parseInt() 此方法用于獲取某個(gè)字符串的原始數(shù)據(jù)類(lèi)型 |
7 | abs() 返回參數(shù)的絕對(duì)值 |
8 | ceil() 返回的最小整數(shù)大于或等于該參數(shù)。返回為double |
9 | floor() 返回的最大整數(shù)小于或等于該參數(shù)。返回為double |
10 | rint() 返回的整數(shù),它是最接近值該參數(shù)值。返回為double |
11 | round() 返回最接近的long或者int,通過(guò)該方法的返回類(lèi)型所指參數(shù) |
12 | min() 返回兩個(gè)參數(shù)中較小的 |
13 | max() 返回兩個(gè)參數(shù)中較大的 |
14 | exp() 返回自然對(duì)數(shù)的底數(shù)e,該參數(shù)的冪值 |
15 | log() 返回參數(shù)的自然對(duì)數(shù) |
16 | pow() 返回第一個(gè)參數(shù)的提高至第二個(gè)參數(shù)的冪值 |
17 | sqrt() 返回參數(shù)的平方根 |
18 | sin() 返回指定的double值的正弦值 |
19 | cos() 返回指定的double值的余弦值 |
20 | tan() 返回指定的double值的正切值 |
21 | asin() 返回指定的double值的反正弦 |
22 | acos() 返回指定的double值的反余弦值 |
23 | atan() 返回指定的double值的反正切值 |
24 | atan2() 將直角坐標(biāo)(x,y)轉(zhuǎn)換為極坐標(biāo)(r,θ)并返回θ |
25 | toDegrees() 將參數(shù)轉(zhuǎn)換為度 |
26 | toRadians() 將參數(shù)轉(zhuǎn)換為弧度 |
27 | random() 返回一個(gè)隨機(jī)數(shù) |
數(shù)組
Java 提供了一個(gè)數(shù)據(jù)結(jié)構(gòu):數(shù)組,用于存儲(chǔ)相同類(lèi)型的元素的一個(gè)固定大小的連續(xù)集合。數(shù)組是用于存儲(chǔ)數(shù)據(jù)的集合,但往往將數(shù)組認(rèn)為是相同類(lèi)型的變量的集合。
跟聲明單個(gè)變量相反,如 number0, number1, ... number99, 聲明一個(gè)數(shù)組變量,如數(shù)字和使用 numbers[0], numbers[1] ..., numbers[99] 來(lái)表示各個(gè)變量。
此次教程將介紹如何使用索引變量聲明數(shù)組變量,創(chuàng)建數(shù)組,并處理數(shù)組。
聲明數(shù)組變量
要使用一個(gè)程序的數(shù)組,必須聲明一個(gè)變量來(lái)引用數(shù)組,必須指定數(shù)組的變量可以引用的類(lèi)型。下面是來(lái)聲明一個(gè)數(shù)組變量的語(yǔ)法:
dataType[] arrayRefVar; // preferred way.
or
dataType arrayRefVar[]; // works but not preferred way.
注 風(fēng)格 dataType[] arrayRefVar 是首選的。風(fēng)格 dataType arrayRefVar[] 來(lái)自于 C/C++ 語(yǔ)言, 方便Java 繼承 C/C++ 的編程風(fēng)格。
示例
下面的代碼片段是這種語(yǔ)法的例子:
double[] myList; // preferred way.
or
double myList[]; // works but not preferred way.
創(chuàng)建數(shù)組
可以通過(guò)使用 new 運(yùn)算符使用以下語(yǔ)法創(chuàng)建一個(gè)數(shù)組:
arrayRefVar = new dataType[arraySize];
上面的語(yǔ)句做了兩件事:
- 它創(chuàng)建了一個(gè)使用 new dataType[arraySize] 的數(shù)組;
- 它將新創(chuàng)建的數(shù)組引用分配給變量 arrayRefVar。
聲明數(shù)組變量,建立一個(gè)數(shù)組,并分配給變量數(shù)組引用可以在一個(gè)語(yǔ)句中組合使用,如下所示:
dataType[] arrayRefVar = new dataType[arraySize];
另外,可以創(chuàng)建數(shù)組,如下所示:
dataType[] arrayRefVar = {value0, value1, ..., valuek};
數(shù)組元素通過(guò)索引訪問(wèn)。數(shù)組的下標(biāo)是從0開(kāi)始的,也就是說(shuō),它們從0開(kāi)始到 arrayRefVar.length-1。
示例
下面的語(yǔ)句聲明一個(gè)數(shù)組變量 myList,創(chuàng)建 double 類(lèi)型的10個(gè)元素的數(shù)組,并把它的引用分配到 myList :
double[] myList = new double[10];
以下圖片代表數(shù)組 myList。在這里,myList 有10個(gè) double 值,索引是從0到9。
處理數(shù)組
當(dāng)處理數(shù)組元素時(shí),經(jīng)常使用的是 loop 循環(huán)或 foreach 循環(huán),因?yàn)橐粋€(gè)數(shù)組中所有的元素是相同類(lèi)型的并且數(shù)組的大小是已知的。
示例
下面是一個(gè)演示如何創(chuàng)建,初始化和處理數(shù)組的完整例子:
public class TestArray { public static void main(String[] args) { double[] myList = {1.9, 2.9, 3.4, 3.5}; // Print all the array elements for (int i = 0; i < myList.length; i++) { System.out.println(myList[i] + " "); } // Summing all elements double total = 0; for (int i = 0; i < myList.length; i++) { total += myList[i]; } System.out.println("Total is " + total); // Finding the largest element double max = myList[0]; for (int i = 1; i < myList.length; i++) { if (myList[i] > max) max = myList[i]; } System.out.println("Max is " + max); } }
這將產(chǎn)生以下結(jié)果:
1.9 2.9 3.4 3.5 Total is 11.7 Max is 3.5
foreach 循環(huán)
JDK 1.5 引入了一個(gè)新的 for 循環(huán)被稱(chēng)為 foreach 循環(huán)或增強(qiáng)的 for 循環(huán),它無(wú)需使用一個(gè)索引變量來(lái)完整的遍歷數(shù)組。
示例
下面的代碼顯示數(shù)組 myList 中的所有元素:
public class TestArray { public static void main(String[] args) { double[] myList = {1.9, 2.9, 3.4, 3.5}; // Print all the array elements for (double element: myList) { System.out.println(element); } } }
這將產(chǎn)生以下結(jié)果:
1.9 2.9 3.4 3.5
將數(shù)組傳遞給方法
正如傳遞基本類(lèi)型值的方法,也可以將數(shù)組傳遞給方法。例如,下面的方法顯示在一個(gè) int 數(shù)組中的元素:
public static void printArray(int[] array) { for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); } }
你可以通過(guò)傳遞數(shù)組調(diào)用它。例如,下面的語(yǔ)句調(diào)用方法 PrintArray 顯示3,1,2,6,4,2:
printArray(new int[]{3, 1, 2, 6, 4, 2});
從一個(gè)方法返回一個(gè)數(shù)組
一個(gè)方法也可以返回一個(gè)數(shù)組。例如,下面所示的方法返回一個(gè)數(shù)組,它是另一個(gè)數(shù)組的反轉(zhuǎn):
public static int[] reverse(int[] list) { int[] result = new int[list.length]; for (int i = 0, j = result.length - 1; i < list.length; i++, j--) { result[j] = list[i]; } return result; }
Arrays 類(lèi)
java.util.Arrays 中的類(lèi)包含各種靜態(tài)方法用于排序和搜索數(shù)組、數(shù)組的比較和填充數(shù)組元素。這些方法為所有基本類(lèi)型所重載。
SN | 方法和描述 |
---|---|
1 | public static int binarySearch (Object[] a, Object key) 使用二進(jìn)制搜索算法搜索對(duì)象的指定數(shù)組(字節(jié),整數(shù),雙精度等)來(lái)指定值。該數(shù)組必須在進(jìn)行此調(diào)用之前進(jìn)行分類(lèi)。如果它被包含在列表 (-(insertion point + 1), 將返回索引搜索關(guān)鍵字。 |
2 | public static boolean equals (long[] a, long[] a2) 如果多頭的兩個(gè)指定數(shù)組彼此相等返回true。兩個(gè)數(shù)組認(rèn)為是相等判定方法:如果兩個(gè)數(shù)組包含相同的元素?cái)?shù)目,并在兩個(gè)數(shù)組元素的所有相應(yīng)對(duì)相等。如果兩個(gè)數(shù)組相等,返回true。同樣的方法可以用于所有其它的原始數(shù)據(jù)類(lèi)型 (Byte, short, Int, etc.) |
3 | public static void fill(int[] a, int val) 將指定的int值到指定的int型數(shù)組中的每個(gè)元素。同樣的方法可以用于所有其它的原始數(shù)據(jù)類(lèi)型(Byte, short, Int etc.) |
4 | public static void sort(Object[] a) 將對(duì)象指定的數(shù)組升序排列,根據(jù)其元素的自然順序。同樣的方法可以用于所有其它的原始數(shù)據(jù)類(lèi)型( Byte, short, Int, etc.) |
相關(guān)文章
關(guān)于注解FeignClient的使用規(guī)范
這篇文章主要介紹了關(guān)于注解FeignClient的使用規(guī)范,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03java開(kāi)發(fā)只要tomcat設(shè)計(jì)模式用的好下班就能早
這篇文章主要為大家介紹了java開(kāi)發(fā)只要tomcat設(shè)計(jì)模式的示例詳解,<BR>只要設(shè)計(jì)模式用的好下班就能早,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02Spring Boot Debug調(diào)試過(guò)程圖解
這篇文章主要介紹了Spring Boot Debug調(diào)試過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01Spring boot將配置屬性注入到bean類(lèi)中
本篇文章主要介紹了Spring boot將配置屬性注入到bean類(lèi)中,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03JavaFx 中創(chuàng)建計(jì)時(shí)器的步驟詳解
本文介紹了如何在JavaFx中創(chuàng)建計(jì)時(shí)器,通過(guò)創(chuàng)建計(jì)時(shí)器界面、編寫(xiě)計(jì)時(shí)器邏輯以及關(guān)聯(lián)計(jì)時(shí)器按鈕,我們可以快速實(shí)現(xiàn)一個(gè)靈活可靠的計(jì)時(shí)器組件,本文能夠幫助讀者在 JavaFx 中成功實(shí)現(xiàn)自己的計(jì)時(shí)器功能,感興趣的朋友一起看看吧2023-11-11詳解使用spring boot admin監(jiān)控spring cloud應(yīng)用程序
這篇文章主要介紹了詳解使用spring boot admin監(jiān)控spring cloud應(yīng)用程序,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05java實(shí)現(xiàn)Flappy Bird游戲源代碼
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)Flappy Bird游戲源代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12關(guān)于java.lang.IncompatibleClassChangeError錯(cuò)誤解決方案
最近開(kāi)發(fā)中遇到類(lèi)沖突報(bào)錯(cuò) java.lang.IncompatibleClassChangeError,所以下面這篇文章主要給大家介紹了關(guān)于java.lang.IncompatibleClassChangeError錯(cuò)誤的解決方案,需要的朋友可以參考下2024-02-02