拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 Java 中的Integer.toString() 与String.valueOf()

Java 中的Integer.toString() 与String.valueOf()

白鹭 - 2022-08-19 2139 0 2

一、概述

众所周知,从intString的转换是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()可能会抛出NullPointerExceptionString.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 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *