就包装器类的实例而言,与int、double等相比,通过构造函数中的String参数创建实例时,实例的行为是否有所不同。
例如,在以下方面有区别:
Integer wrapperInt= new Integer(33);
Integer wrapperInt2= new Integer("33");发布于 2014-02-26 19:56:01
最终结果将是相同的-您将拥有一个值为33的Integer对象。
如果无法解析输入字符串,接受String的版本将抛出NumberFormatException。
注意:不需要编写像Integer wrapperInt = new Integer(33);这样的语句。让编译器为您完成此操作(自动装箱):
Integer wrapperInt = 33;如果出于某种原因,您不想使用自动装箱,那么至少使用Integer.valueOf(...)而不是使用构造函数:
Integer wrapperInt = Integer.valueOf(33);这样效率更高;valueOf方法可以返回缓存的对象(这样就不需要创建新的Integer对象)。
发布于 2014-02-26 19:53:32
不,不是。两个实例都表示整数33。如果有区别,它将被写在javadoc中。
请注意,您应该倾向于使用工厂方法:
Integer i = Integer.valueOf(33);
i = Integer.valueOf("33");发布于 2014-02-26 19:56:43
唯一的区别是,在第二种方法中,你将不必要地创建一个字符串对象,它将尝试解析你传递给构造函数的字符串,如果它无法解析字符串,那么它将抛出NumberFormatException。
https://stackoverflow.com/questions/22040508
复制相似问题