Integer.valueOf() 與 Integer.parseInt() 示例對比


在Java中,`Integer.parseInt()`和`Integer.valueOf()`方法都用於將字串轉換為整數。這兩個靜態方法都屬於`java.lang`包中的`Integer`類,如果字串不是整數的有效表示,則會丟擲`NumberFormatException`異常。但是,問題出現了:為什麼Java要提供這兩個功能相同的的方法呢?雖然它們用於執行類似的任務,但在語法和返回型別方面存在一些區別。在本文中,我們將透過示例程式解釋`Integer.parseInt()`和`Integer.valueOf()`方法之間的區別。

Java中的`Integer.parseInt()`與`Integer.valueOf()`

Java中的`Integer.parseInt()`方法

`Integer.parseInt()`方法接收一個字串作為引數,並將其解析為原始整數值。如果要將指定的字串轉換為其他數字系統(如二進位制和十六進位制),可以透過提供第二個引數(即數字系統的基數或進位制)來實現。例如,如果要解析十六進位制字串,可以將16作為基數傳遞。

語法

Integer.parseInt(string val1, int val2);

這裡,整數引數`val2`是可選的,稱為基數。

示例1

以下示例演示了`Integer.parseInt()`方法的使用。

public class Example1 {
   public static void main(String[] args) {
      String stVal = "42";
      // converting string into integer
      int n1 = Integer.parseInt(stVal); 
      int n2 = Integer.parseInt(stVal, 16); // hexadecimal value
      // printing the result
      System.out.println("n1 = " + n1 + " , n2 = " + n2);
   }
}

輸出

n1 = 42 , n2 = 66

Java中的`Integer.valueOf()`方法

`Integer.valueOf()`方法可以接收字串、字元或整數作為引數,但返回一個包含已解析整數的`Integer`物件。它也可以透過傳遞所需數字系統的基數或進製作為引數來將指定的字串轉換為其他數字系統。

語法

Integer.valueOf(val1, val2);

這裡,整數引數`val2`是可選的,稱為基數。

示例2

以下示例演示了`Integer.valueOf()`方法的使用。

public class Example2 {
   public static void main(String[] args) {
      String stVal = "42";
      // converting string into integer
      int n1 = Integer.valueOf(stVal); 
      int n2 = Integer.valueOf(stVal, 16); // hexadecimal value
      // printing the result
      System.out.println("n1 = " + n1 + " , n2 = " + n2);
   }
}

輸出

n1 = 42 , n2 = 66

`Integer.valueOf()`和`Integer.parseInt()`方法的區別

下表包含`Integer.valueOf()`和`Integer.parseInt()`方法的區別

`Integer.valueOf()` `Integer.parseInt()`
其返回型別是`Integer`包裝物件。 其返回型別是原始整數值。
它可以接受字串、字元或整數作為引數。 它只接受字串型別物件。
當我們傳遞字元作為引數時,它將返回相應的ASCII值。 當我們傳遞字元作為引數時,編譯器將丟擲錯誤。
`Integer.valueOf()`可以快取一些值以提高效能,這意味著使用相同的值呼叫此方法可能會返回相同的物件引用。 呼叫`Integer.parseInt()`方法將始終建立一個新的整數值。

現在,讓我們討論幾個更詳細的示例,以便更清楚地瞭解這兩種方法的區別。

示例3

如前所述,如果我們傳遞錯誤的整數字符串表示,這兩種方法都將丟擲`NumberFormatException`異常。讓我們來看一下。

public class Example3 {
   public static void main(String[] args) {
      String s = "42.03";
      // converting string into integer
      int n1 = Integer.parseInt(s); 
      int n2 = Integer.valueOf(s); 
      // printing the result
      System.out.println("n1 = " + n1 + " , n2 = " + n2);
   }
}

輸出

Exception in thread "main" java.lang.NumberFormatException: For input string: "42.03"
	at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
	at java.base/java.lang.Integer.parseInt(Integer.java:665)
	at java.base/java.lang.Integer.parseInt(Integer.java:781)
	at Example3.main(Example3.java:5)

示例4

如果我們向`Integer.parseInt()`方法傳遞字元作為引數,我們將遇到“不相容型別:char 無法轉換為 String”錯誤,如下例所示。

public class Example4 {
   public static void main(String[] args) {
      char chs = 't';
      // converting character into integer
      int n1 = Integer.parseInt(chs); 
      // printing the result
      System.out.println("n1 = " + n1);
   }
}

輸出

Example4.java:5: error: incompatible types: char cannot be converted to String
        int n1 = Integer.parseInt(chs);

示例5

如果我們向`Integer.valueOf()`方法傳遞字元作為引數,程式碼將正常工作並返回相應的ASCII值。我們也可以傳遞整數值。

public class Example5 {
   public static void main(String[] args) {
      int val1 = 56;
      char chs = 't';
      // converting character into integer
      int n1 = Integer.valueOf(chs); 
      // converting the integer value
      int n2 = Integer.valueOf(val1); 
      // printing the result
      System.out.println("n1 = " + n1 + " , n2 = " + n2);
   }
}

輸出

n1 = 116 , n2 = 56

結論

`Integer.parseInt()`和`Integer.valueOf()`都是將字串轉換為整數非常有用的方法。通常,如果我們需要原始整數值,可以使用`Integer.parseInt()`;如果我們需要`Integer`包裝物件,可以使用`Integer.valueOf()`。`Integer.valueOf()`方法的效能明顯快於`Integer.parseInt()`方法。

更新於:2023年7月20日

瀏覽量:598

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.