Java 中的 Integer.toString() 與 String.valueOf()
一、概述
眾所周知,從int
到String
的轉換是 Java 中非常常見的操作。
在這個簡短的教程中,我們將介紹兩個非常流行的 方法, Integer
類的toString()
和String
類的valueOf()
,這有助於我們進行這種轉換。此外,我們還將使用這兩種方法查看一些要點和示例,以更好地理解它。
2. Integer.toString()
方法
此方法接受原始數據類型int
的整數作為參數,並返回表示指定整數的String
對象。
讓我們看看它的簽名:
public static String toString(int i)
現在,我們將看到一些示例,其中我們將有符號/無符號整數作為參數傳遞給它,以了解整數到字符串的轉換發生:
@Test
public void whenValidIntIsPassed_thenShouldConvertToString() {
assertEquals("11", Integer.toString(11));
assertEquals("11", Integer.toString(+11));
assertEquals("-11", Integer.toString(-11));
}
3. String.valueOf()
方法
此方法還接受原始數據類型int
的整數作為參數並返回String
對象。有趣的是,返回的字符串表示與Integer.toString(int i)
方法返回的表示完全相同。這是因為在內部,它使用Integer.toString()
方法。
讓我們看看它在java.lang.String
類中給出的內部實現:
/**
* Returns the string representation of the {@code int} argument.
* <p>
* The representation is exactly the one returned by the
* {@code Integer.toString} method of one argument.
*
* @param i an {@code int}.
* @return a string representation of the {@code int} argument.
* @see java.lang.Integer#toString(int, int)
*/
public static String valueOf(int i) {
return Integer.toString(i);
}
為了更好地理解它,我們將看到一些示例,其中我們將有符號/無符號整數作為參數傳遞給它,以了解整數到字符串的轉換發生:
@Test
public void whenValidIntIsPassed_thenShouldConvertToValidString() {
assertEquals("11", String.valueOf(11));
assertEquals("11", String.valueOf(+11));
assertEquals("-11", String.valueOf(-11));
}
4. 整數之間的差異。 toString()
和字符串。 valueOf()
總而言之,這兩種方法之間沒有實際區別,但我們應該了解以下幾點以避免混淆。
當我們使用String.valueOf()
方法時,堆棧跟踪中有一個額外的調用,因為它在內部使用相同的Integer.toString()
方法。
將null
對像傳遞給valueOf() method because,
當將原始int
傳遞給valueOf()
方法時,它看起來相同,但實際的方法調用會轉到不同的重載方法。
如果給定Integer
對象為null
,則Integer.toString()
可能會拋出NullPointerException
。 String.valueOf()
不會拋出異常,因為它將轉到String.valueOf(Object obj)
方法並返回null
。請注意,傳遞給String.valueOf(int i)
的primitive int
永遠不能為null
,但由於存在另一個方法String.valueOf(Object obj)
,我們可能會混淆這兩個重載方法。
讓我們通過以下示例來理解最後一點:
@Test(expected = NullPointerException.class)
public void whenNullIntegerObjectIsPassed_thenShouldThrowException() {
Integer i = null;
System.out.println(String.valueOf(i));
System.out.println(i.toString());
}
請注意,原始int
永遠不能為null
,我們正在檢查它以防異常被它下面的方法拋出。
5. 結論
在本文中,我們了解了整數。 toString()
和字符串。 valueOf()
方法。我們還研究了一些我們應該集中精力避免編程時混淆的地方。
與往常一樣,可以在 GitHub 上找到本文的完整代碼示例。