Java 數(shù)字?jǐn)?shù)據(jù)類型

2018-01-23 16:06 更新

Java數(shù)據(jù)類型教程 - Java數(shù)字?jǐn)?shù)據(jù)類型


字節(jié),短整數(shù),整數(shù),長整數(shù),浮點(diǎn)數(shù)和雙精度類是數(shù)字包裝類。

它們都繼承自抽象的Number類。我們不能創(chuàng)建Number類的對象。然而,er可以聲明Number類的引用變量。

我們可以將六個(gè)數(shù)值包裝類中的任何一個(gè)的對象引用分配給Number類的引用。

Number類包含六個(gè)方法。它們被命名為xxxValue(),其中xxx是六種基本數(shù)據(jù)類型之一(byte,short,int,long,float和double)。

方法的返回類型與xxx相同。


例子

以下代碼顯示如何從數(shù)值包裝器對象檢索不同的primate類型值:

public class Main {
  public static void main(String[] args) {
    Integer intObj = Integer.valueOf(100);

    // Gets byte from Integer
    byte b = intObj.byteValue();

    // Gets double from Integer
    double dd = intObj.doubleValue();
    System.out.println("intObj = " + intObj);
    System.out.println("byte from  intObj = " + b);
    System.out.println("double from  intObj = " + dd);

    // Creates a Double object
    Double doubleObj = Double.valueOf("123.45");

    // Gets different types of primitive values from Double
    double d = doubleObj.doubleValue();
    float f = doubleObj.floatValue();
    int i = doubleObj.intValue();
    long l = doubleObj.longValue();

    System.out.println("doubleObj = " + doubleObj);
    System.out.println("double from  doubleObj   = " + d);
    System.out.println("float from  doubleObj   = " + f);
    System.out.println("int from  doubleObj   = " + i);
    System.out.println("long from  doubleObj   = " + l);
  }
}

上面的代碼生成以下結(jié)果。

方法

Java 8在一些數(shù)值包裝類(如Integer,Long,F(xiàn)loat和Double)中添加了一些方法,如sum(),max()和min()。

例如,Integer.sum(10,20)簡單地返回10 + 20的結(jié)果。

它們的引用用于使用集合的lambda表達(dá)式。

包裝器類幫助處理包含原始值的字符串。

  • 使用valueOf()方法將字符串轉(zhuǎn)換為包裝器對象。
  • 使用parseXxx()方法將字符串轉(zhuǎn)換為原始值。

字節(jié),短整型,整型,長整型,浮點(diǎn)型和雙精度型分別包含parseByte(),parseShort(),parseInt(),parseLong(),parseFloat()和parseDouble

以下代碼將包含二進(jìn)制格式的整數(shù)的字符串轉(zhuǎn)換為Integer對象和int值:

public class Main {
  public static void main(String[] args) {
    String str = "01111111";
    int radix = 2;

    // Creates an Integer object from the string
    Integer intObject = Integer.valueOf(str, radix);

    // Extracts the int value from the string
    int intValue = Integer.parseInt(str, 2);

    System.out.println("str = " + str);
    System.out.println("intObject = " + intObject);
    System.out.println("intValue = " + intValue);

  }
}

上面的代碼生成以下結(jié)果。

所有數(shù)值包裝類都包含幾個(gè)有用的常量。它們的MIN_VALUE和MAX_VALUE個(gè)常數(shù)表示最小值和最大值。它們還具有SIZE常數(shù),其表示對應(yīng)原始類型的變量占據(jù)的位的大小。

以下代碼嘗試將兩個(gè)字符串解析為雙精度值。

第一個(gè)字符串包含有效的double,第二個(gè)字符串包含無效的double。當(dāng)調(diào)用parseDouble()方法來解析第二個(gè)字符串時(shí),拋出NumberFormatException。

public class Main {
  public static void main(String[] args) {
    String str1 = "123.45";
    try {
      double value1 = Double.parseDouble(str1);
      System.out.println("value1 = " + value1);
    } catch (NumberFormatException e) {
      System.out.println("Error in parsing " + str1);
    }

    String str2 = "8H.9"; // An invalid double
    try {
      double value2 = Double.parseDouble(str2);
      System.out.println("value2 = " + value2);
    } catch (NumberFormatException e) {
      System.out.println("Error in parsing " + str2);
    }

  }
}

上面的代碼生成以下結(jié)果。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號