數字
通常情況下,當我們處理數字時,使用原始數據類型,如 byte,int,long,double 等。
示例
int i = 5000;float gpa = 13.65;byte mask = 0xaf;
然而,在開發中,我們會遇到需要使用對象而不是原始數據類型的情況。為了實現這個, Java 為每個原始數據類型提供包裝類。
所有的包裝類 (Integer, Long, Byte, Double, Float, Short) 是抽象類 Number 的子類。
這種包裝是由編譯器處理,這個過程稱為裝箱。因此,當一個原始數據類型被使用,當需要一個對象時,編譯器將原始數據放入其包裝類。同樣地,編譯器也能將對象取出返回到原始數據類型。Number 是 java.lang 包的一部分。
這里是裝箱和拆箱的一個例子:
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); }}
這將產生以下結果:
Number 方法
以下是對 Number 類實現的所有子類中實現的實例方法的列表:
SN | 方法描述 |
---|---|
1 | xxxValue() 這個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];
上面的語句做了兩件事:
聲明數組變量,建立一個數組,并分配給變量數組引用可以在一個語句中組合使用,如下所示:
dataType[] arrayRefVar = new dataType[arraySize];
另外,可以創建數組,如下所示:
dataType[] arrayRefVar = {value0, value1, ..., valuek};
數組元素通過索引訪問。數組的下標是從0開始的,也就是說,它們從0開始到 arrayRefVar.length-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 < 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); }}
這將產生以下結果:
1.92.93.43.5Total 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) { System.out.println(element); } }}
這將產生以下結果:
1.92.93.43.5
將數組傳遞給方法
正如傳遞基本類型值的方法,也可以將數組傳遞給方法。例如,下面的方法顯示在一個 int 數組中的元素:
public static void printArray(int[] array) { for (int i = 0; i < array.length; i++) { System.out.print(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[list.length]; for (int i = 0, j = result.length - 1; i < list.length; i++, j--) { result[j] = list[i]; } return result;}
Arrays 類
java.util.Arrays 中的類包含各種靜態方法用于排序和搜索數組、數組的比較和填充數組元素。這些方法為所有基本類型所重載。
SN | 方法和描述 |
---|---|
1 | public static int binarySearch (Object[] a, Object key) 使用二進制搜索算法搜索對象的指定數組(字節,整數,雙精度等)來指定值。該數組必須在進行此調用之前進行分類。如果它被包含在列表 (-(insertion 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.) |
新聞熱點
疑難解答