一、概述
众所周知,从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()
方法。我们还研究了一些我们应该集中精力避免编程时混淆的地方。
0 评论