Java 使用parseInt创建包装器对象

Java 使用parseInt创建包装器对象,java,object,wrapper,Java,Object,Wrapper,我正在阅读《Java 9基础》一书,关于创建包装器对象,作者说: “所有包装类都是不可变的。它们提供了三种创建 他们的目标: 1-使用构造函数 2-使用valueOf()工厂方法 3-使用parseXxx()方法,其中Xxx是包装类的名称。它在Character类中不可用 第一点和第二点我都很清楚,但第三点我没有完全理解。 但是API说Integer.parseXxx返回一个原语。 这有意义吗?是的,静态方法Integer.parseInt(String)尝试将给定字符串解析为原始整数。否则,将

我正在阅读《Java 9基础》一书,关于创建包装器对象,作者说:

“所有包装类都是不可变的。它们提供了三种创建 他们的目标:

1-使用构造函数

2-使用
valueOf()
工厂方法

3-使用
parseXxx()
方法,其中
Xxx
是包装类的名称。它在
Character
类中不可用

第一点和第二点我都很清楚,但第三点我没有完全理解。 但是API说Integer.parseXxx返回一个原语。
这有意义吗?

是的,静态方法
Integer.parseInt(String)
尝试将给定字符串解析为原始整数。否则,将引发异常


因此,基本上不需要包装它,因为它保证了成功,或者通过抛出“让您知道”它不能。我看到的使用
parseXxx
创建包装器对象的唯一方法是将目标类型实际设为包装器类型本身。即:

Integer number = Integer.parseInt("123");
然而,
parseInt
并不是真正创建包装器对象,而是将
parseInt
返回的值自动装箱到相应的包装器类型。

查看Integer类的可以确认
Integer.parseInt
返回int原语。下面是方法签名的方式

public static int parseInt(String s, int radix)
api基本上将字符串参数解析为带符号的十进制整数。字符串中的字符必须全部为十进制数字,api才能工作

在java程序中,它可以如下使用,从
String

int newInt = Integer.parseInt("99");

但是Integer.parseInt(…)例如,它本身并不创建任何对象,是吗?。只返回一个原语它不会创建Integer(装箱原语)的实例,不是。除了下面的答案之外,这些文档可能有助于澄清一些困惑:@silviaDominguez同意,措辞肯定可以改进。