一般情況下我們會使用資料的基本資料型態:byte、int、short、long、double、float、boolean、char;
對應的包裝類型也有八種:Byte、Integer、Short、Long、Double、Float、Character、Boolean;
包裝類型都是用final 宣告了,不可以被繼承重寫;在實際情況中編譯器會自動的將基本資料型別裝箱成物件類型,或是將物件型別拆箱成基本資料型別;如下:
public static void main(String[] args) { int num1 = 1; //將基本資料型別裝箱成物件包裝型別 Integer num2 = num1; Integer num3 = 3; //將物件資料類別拆箱 int num4 = num3; }
Number 類別是java.lang 套件下的一個抽象類,提供了將包裝類型拆箱成基本類型的方法,所有基本類型(資料類型)的包裝類型都繼承了該抽象類,並且是final聲明不可繼承改變;
package java.lang; public abstract class Number implements java.io.Serializable { public abstract int intValue(); public abstract long longValue(); public abstract float floatValue(); public abstract double doubleValue(); public byte byteValue() { return (byte)intValue(); } public short shortValue() { return (short)intValue(); } private static final long serialVersionUID = -8742448824652078965L; }
包裝類 | 基本資料類型 |
---|---|
Boolean | boolean |
Byte | byte |
Short | short |
Integer | int |
Long | long |
Character | char |
Float | float |
Double | double |
這種由編譯器特別支援的包裝稱為裝箱,所以當內建資料型別被當作物件使用的時候,編譯器會把內建型別裝箱為包裝類別。相似的,編譯器也可以把一個物件拆箱為內建型別。 Number 類別屬於java.lang 套件。
以下是一個裝箱與拆箱的範例:
publicclassTest{
publicstaticvoidmain(Stringargs[]){
Integerx=5;//boxesinttoanIntegerobject
x=x+10;//unboxestheIntegertoaint
System.out.println(x);
}
}
以上實例編譯運行結果如下:
15
當x被賦為整數值時,由於x 是一個對象,所以編譯器要對x進行裝箱。然後,為了讓x能進行加運算,所以要將x進行拆箱。
Java的Math包含了用於執行基本數學運算的屬性和方法,例如初等指數、對數、平方根和三角函數。
Math的方法都被定義為static形式,透過Math類別可以在主函數中直接呼叫。
實例
public class Test {
public static void main (String []args)
{
System.out.println("90 度的正弦值:" + Math.sin(Math.PI/2));
System.out.println("0度的餘弦值:" + Math.cos(0));
System.out.println("60度的正切值:" + Math.tan(Math.PI/3));
System.out.println("1的反正切值: " + Math.atan(1));
System.out.println("π/2的角度值:" + Math.toDegrees(Math.PI/2));
System.out.println(Math.PI);
}
}
以上實例編譯運行結果如下:
90 度的正弦值:1.0
0度的餘弦值:1.0
60度的正切值:1.7320508075688767
1的反正切值: 0.7853981633974483
π/2的角度值:90.0
3.141592653589793
Number&Math類別方法
下面的表中列出的是常用的Number 類別和Math 類別的方法:
序號 | 方法與描述 | |||||
---|---|---|---|---|---|---|
1 | xxxValue()將number物件轉換為xxx資料類型的值並傳回。 | |||||
2 | compareTo()將number物件與參數比較。 | |||||
3 | equals() 判斷number物件是否與參數相等。 | |||||
4 | valueOf() 傳回一個Integer物件指定的內建資料類型 | |||||
5 | toString()以字串形式傳回值。 | |||||
6 | parseInt()將字串解析為int型別。 | |||||
7 | abs()傳回參數的絕對值。 | |||||
8 | ceil()傳回大於等於( >= )給定參數的最小整數,類型為雙精確度的浮點型。 | |||||
9 | floor()傳回小於等於(<=)給定參數的最大整數。 | |||||
10 | rint()傳回與參數最接近的整數。傳回類型為double。 | |||||
11 | round()傳回一個最接近的int、long型值。 | |||||
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()將直角座標轉換為極座標,並傳回極座標的角度值。 | |||||
25 | toDegrees()將參數轉換為角度。 | |||||
26 | toRadians()將角度轉換為弧度。 | |||||
27 | random()傳回一個隨機數。 |