首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包装器类,通过构造器中的字符串参数创建对象时功能上的差异?

包装器类,通过构造器中的字符串参数创建对象时功能上的差异?
EN

Stack Overflow用户
提问于 2014-02-26 19:51:21
回答 4查看 1.1K关注 0票数 0

就包装器类的实例而言,与intdouble等相比,通过构造函数中的String参数创建实例时,实例的行为是否有所不同。

例如,在以下方面有区别:

代码语言:javascript
复制
Integer wrapperInt= new Integer(33);

Integer wrapperInt2= new Integer("33");
EN

回答 4

Stack Overflow用户

发布于 2014-02-26 19:56:01

最终结果将是相同的-您将拥有一个值为33Integer对象。

如果无法解析输入字符串,接受String的版本将抛出NumberFormatException

注意:不需要编写像Integer wrapperInt = new Integer(33);这样的语句。让编译器为您完成此操作(自动装箱):

代码语言:javascript
复制
Integer wrapperInt = 33;

如果出于某种原因,您不想使用自动装箱,那么至少使用Integer.valueOf(...)而不是使用构造函数:

代码语言:javascript
复制
Integer wrapperInt = Integer.valueOf(33);

这样效率更高;valueOf方法可以返回缓存的对象(这样就不需要创建新的Integer对象)。

票数 4
EN

Stack Overflow用户

发布于 2014-02-26 19:53:32

不,不是。两个实例都表示整数33。如果有区别,它将被写在javadoc中。

请注意,您应该倾向于使用工厂方法:

代码语言:javascript
复制
Integer i = Integer.valueOf(33);
i = Integer.valueOf("33");
票数 2
EN

Stack Overflow用户

发布于 2014-02-26 19:56:43

唯一的区别是,在第二种方法中,你将不必要地创建一个字符串对象,它将尝试解析你传递给构造函数的字符串,如果它无法解析字符串,那么它将抛出NumberFormatException。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22040508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档