當前位置:才華齋>計算機>java語言>

Java中的陣列基礎知識整理

java語言 閱讀(1.36W)

通常情況下,當我們處理數字時,使用原始資料型別,如 byte,int,long,double 等。

Java中的陣列基礎知識整理

示例

int i = 5000;float gpa = 13.65;byte mask = 0xaf;

然而,在開發中,我們會遇到需要使用物件而不是原始資料型別的情況。為了實現這個, Java 為每個原始資料型別提供包裝類。

所有的包裝類 (Integer, Long, Byte, Double, Float, Short) 是抽象類 Number 的子類。

這種包裝是由編譯器處理,這個過程稱為裝箱。因此,當一個原始資料型別被使用,當需要一個物件時,編譯器將原始資料放入其包裝類。同樣地,編譯器也能將物件取出返回到原始資料型別。Number 是 包的一部分。

這裡是裝箱和拆箱的一個例子:

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 tln(x); }}

這將產生以下結果:

複製程式碼 程式碼如下:15

當 x 被分配整數值,則編譯器將整數放入箱中,因為 x 為整數物件。然後,x 被拆箱,以便它們可以被新增為整數。

Number 方法

以下是對 Number 類實現的所有子類中實現的例項方法的列表

1 xxxValue()

SN方法描述

這個Number物件的值轉換為XXX的資料型別並返回 2 compareTo()

把這個Number物件與引數做比較 3 equals()

確定這個數字物件是否等於引數 4 valueOf()

返回一個Integer物件持有指定的原始值 5 toString()

返回表示指定的int或整數的值的String物件 6 parseInt()

此方法用於獲取某個字串的原始資料型別 7 abs()

返回引數的絕對值 8 ceil()

返回的最小整數大於或等於該引數。返回為double 9 floor()

返回的最大整數小於或等於該引數。返回為double 10 rint()

返回的整數,它是最接近值該引數值。返回為double 11 round()

返回最接近的long或者int,通過該方法的返回型別所指引數 12 min()

返回兩個引數中較小的 13 max()

返回兩個引數中較大的 14 exp()

返回自然對數的底數e,該引數的冪值 15 log()

返回引數的自然對數 16 pow()

返回第一個引數的提高至第二個引數的冪值 17 sqrt()

返回引數的平方根 18 sin()

返回指定的double值的正弦值 19 cos()

返回指定的double值的餘弦值 20 tan()

返回指定的double值的正切值 21 asin()

返回指定的double值的反正弦 22 acos()

返回指定的double值的反餘弦值 23 atan()

返回指定的double值的反正切值 24 atan2()

將直角座標(x,y)轉換為極座標(r,θ)並返回θ 25 toDegrees()

將引數轉換為度 26 toRadians()

將引數轉換為弧度 27 random()

返回一個隨機數

陣列

Java 提供了一個數據結構:陣列,用於儲存相同型別的元素的一個固定大小的連續集合。陣列是用於儲存資料的集合,但往往將陣列認為是相同型別的變數的集合。

跟宣告單個變數相反,如 number0, number1, ... number99, 宣告一個數組變數,如數字和使用 numbers[0], numbers[1] ..., numbers[99] 來表示各個變數。

此次教程將介紹如何使用索引變數宣告陣列變數,建立陣列,並處理陣列。

宣告陣列變數

要使用一個程式的陣列,必須宣告一個變數來引用陣列,必須指定陣列的變數可以引用的型別。下面是來宣告一個數組變數的語法:

dataType[] arrayRefVar; // preferred way.

or

dataType arrayRefVar[]; // works but not preferred way.

注 風格 dataType[] arrayRefVar 是首選的。風格 dataType arrayRefVar[] 來自於 C/C++ 語言, 方便Java 繼承 C/C++ 的程式設計風格。

示例

下面的程式碼片段是這種語法的例子:

double[] myList; // preferred way.

or

double myList[]; // works but not preferred way.

建立陣列

可以通過使用 new 運算子使用以下語法建立一個數組:

arrayRefVar = new dataType[arraySize];

上面的語句做了兩件事:

它建立了一個使用 new dataType[arraySize] 的陣列; 它將新建立的陣列引用分配給變數 arrayRefVar。

宣告陣列變數,建立一個數組,並分配給變數陣列引用可以在一個語句中組合使用,如下所示:

dataType[] arrayRefVar = new dataType[arraySize];

另外,可以建立陣列,如下所示:

dataType[] arrayRefVar = {value0, value1, ..., valuek};

陣列元素通過索引訪問。陣列的下標是從0開始的,也就是說,它們從0開始到 th-1。

示例

下面的語句宣告一個數組變數 myList,建立 double 型別的10個元素的陣列,並把它的'引用分配到 myList :

double[] myList = new double[10];

以下圖片代表陣列 myList。在這裡,myList 有10個 double 值,索引是從0到9。

處理陣列

當處理陣列元素時,經常使用的是 loop 迴圈或 foreach 迴圈,因為一個數組中所有的元素是相同型別的並且陣列的大小是已知的。

示例

下面是一個演示如何建立,初始化和處理陣列的完整例子:

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 < th; i++) { tln(myList[i] + " "); } // Summing all elements double total = 0; for (int i = 0; i < th; i++) { total += myList[i]; } tln("Total is " + total); // Finding the largest element double max = myList[0]; for (int i = 1; i < th; i++) { if (myList[i] > max) max = myList[i]; } tln("Max is " + max); }}

這將產生以下結果:

Total is 11.7Max is 3.5

foreach 迴圈

JDK 1.5 引入了一個新的 for 迴圈被稱為 foreach 迴圈或增強的 for 迴圈,它無需使用一個索引變數來完整的遍歷陣列。

示例

下面的程式碼顯示陣列 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) { tln(element); } }}

這將產生以下結果:

將陣列傳遞給方法

正如傳遞基本型別值的方法,也可以將陣列傳遞給方法。例如,下面的方法顯示在一個 int 陣列中的元素:

public static void printArray(int[] array) { for (int i = 0; i < th; i++) { t(array[i] + " "); }}

你可以通過傳遞陣列呼叫它。例如,下面的語句呼叫方法 PrintArray 顯示3,1,2,6,4,2:

printArray(new int[]{3, 1, 2, 6, 4, 2});

從一個方法返回一個數組

一個方法也可以返回一個數組。例如,下面所示的方法返回一個數組,它是另一個數組的反轉:

public static int[] reverse(int[] list) { int[] result = new int[th]; for (int i = 0, j = th - 1; i < th; i++, j--) { result[j] = list[i]; } return result;}

Arrays 類

ys 中的類包含各種靜態方法用於排序和搜尋陣列、陣列的比較和填充陣列元素。這些方法為所有基本型別所過載。

1 public static int binarySearch (Object[] a, Object key)

SN方法和描述

使用二進位制搜尋演算法搜尋物件的指定陣列(位元組,整數,雙精度等)來指定值。該陣列必須在進行此呼叫之前進行分類。如果它被包含在列表 (-(ion point + 1), 將返回索引搜尋關鍵字。 2 public static boolean equals (long[] a, long[] a2)

如果多頭的兩個指定陣列彼此相等返回true。兩個陣列認為是相等判定方法:如果兩個陣列包含相同的元素數目,並在兩個陣列元素的所有相應對相等。如果兩個陣列相等,返回true。同樣的方法可以用於所有其它的原始資料型別 (Byte, short, Int, etc.) 3 public static void fill(int[] a, int val)

將指定的int值到指定的int型陣列中的每個元素。同樣的方法可以用於所有其它的原始資料型別(Byte, short, Int etc.) 4 public static void sort(Object[] a)

將物件指定的陣列升序排列,根據其元素的自然順序。同樣的方法可以用於所有其它的原始資料型別( Byte, short, Int, etc.)