天天看點

Number 類源碼解讀定義屬性方法方法測試

定義

Number 類定義如下:

package java.lang;
public abstract class Number implements java.io.Serializable
           

從這裡我們可以了解到以下幾點:

  1. 該類是 java.lang 包下的一個抽象類。
  2. 繼承了 io 的 Serializable 接口,是以該類可以進行序列化操作。

作為抽象類,它是 BigDecimal、BigInteger、Byte、Double、Float、Integer、Long 和 Short 類的父類。是以所有繼承 Number 類的子類都需要提供該抽象類中定義的方法。

屬性

該屬性值是為了序列化定義的,具體序列化的内容會在以後詳細說明。

方法

它提供了以下方法:

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

我們可以看到這些方法都是 xxxValue,其作用就是将資料值轉換為相對應的類型。

方法聲明 作用 傳回值類型
intValue 擷取數值類對應的int數值 傳回int
longValue 擷取數值類對應的long數值 傳回long
floatValue 擷取數值類對應的float數值 傳回float
doubleValue 擷取數值類對應的double數值 傳回double
byteValue 擷取數值類對應的byte數值 傳回byte
shortValue 擷取數值類對應的short數值 傳回short

方法測試

測試代碼:

public class Test {
    public void testInteger() {
        Integer num = new Integer(10);
        System.out.println("intValue(): " + num.intValue());
        System.out.println("longValue(): " + num.longValue());
        System.out.println("floatValue(): " + num.floatValue());
        System.out.println("doubleValue(): " + num.doubleValue());
        System.out.println("byteValue(): " + num.byteValue());
        System.out.println("shortValue(): " + num.shortValue());
    }
}
           

測試結果:

intValue(): 10
longValue(): 10
floatValue(): 10.0
doubleValue(): 10.0
byteValue(): 10
shortValue(): 10