如何将10乘以一个Integer
对象并取回Integer
对象?
我正在寻找这样做的最好方法。
我可能会这样做:从Integer
对象中获取int ,将其与另一个int相乘,并用此int值创建另一个Integer对象。
代码:
integerObj = new Integer(integerObj.intValue() * 10);
但是,我看到一个代码,作者正在这样做:String
从Integer
对象中获取,在末尾连接“0”,然后Integer
通过使用Integer.parseInt
代码是这样的:
String s = integerObj + "0";
integerObj = Integer.parseInt(s);
这样做有什么好处吗?
发布于 2018-06-25 08:33:24
字符串方法很有趣,但几乎可以肯定是一种不好的方法。
获取Integer的int值,并创建一个新的整数将非常快,在这里作为parseInt调用将相当昂贵。
发布于 2018-06-25 09:31:33
第二种方式的问题是Strings在Java中的处理方式:
"0"
在编译时转换成一个常量的String对象。s
都会将其构造为新的String对象,javac
并将该代码转换为String s = new StringBuilder().append(integerObj.toString()).append("0").toString()
(旧版本的StringBuffer)。即使你使用相同的integerObj
,即,
String s1 = integerObj + "0"; String s2 = integerObj + "0";
(s1 == s2)
会是false
,虽然s1.equals(s2)
会true
。Integer.parseIntnew Integer()
无论如何内部调用,因为Integer
是不可改变的。https://stackoverflow.com/questions/-100000318
复制相似问题