Java中的數組基礎知識整理
通常情況下,當我們處理數字時,使用原始數據類型,如 byte,int,long,double 等。
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.)
-
如何使用一個java
Java是一種可以撰寫跨平台應用程序的`面向對象的程序設計語言。以下是小編為大家搜索整理的如何使用一個java,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢業生考試網!...
-
Java 正則表達式
Java是一門編程語言,那麼大家知道Java正則表達式是怎樣的呢?下面一起來看看!Java正則表達式正則表達式定義了字符串的模式。正則表達式可以用來搜索、編輯或處理文本。正則表達式並不僅限於某一種語言,但是在每種語言中有細微的差別。正則表達式實例一個字符串其...
-
Java編程語言初學者入門課程
初學者先弄清這些Java的基本概念也是必不可少的,死記硬背肯定是不行的,重在理解,理解它們之間的區別與聯繫,分別有哪些應用。希望對您有所幫助!更多內容請關注應屆畢業生考試網!一、先明白瞭解什麼是Java的四個方面。初學者先弄清這些Java的基本概念也是必不可少的...
-
java system類使用方法示例
常用的方法:複製代碼代碼如下:longcurrentTimeMillis();獲取當前時間的毫秒值voidexit();終止當前正在運行的Java虛擬機。複製代碼代碼如下:publicstaticvoidMethod(){longl=entTimeMillis();tln(l);();}描述系統屬性信息:Propertiesroperties();該方法獲取的`信...