ChatGPT解决这个技术问题 Extra ChatGPT

Integer.valueOf() 与 Integer.parseInt() [重复]

这个问题在这里已经有了答案:Java中的parseInt()和valueOf()之间的区别? (11 个回答) 4 年前关闭。

除了 Integer.parseInt() 处理减号(如文档所述)外,Integer.valueOf()Integer.parseInt() 之间还有其他区别吗?

由于两者都不能将 , 解析为 decimal 千位分隔符(产生 NumberFormatException),是否有可用的 Java 方法来做到这一点?

我们能否澄清一下,因为您正在处理整数...您是否试图将 "1,000,000" 转换为值 1000000 的 int ?还是将 "123,4" 之类的东西转换为 123 的 int 值?
愿意告诉我们哪个整数有小数分隔符吗? --- 哦,glowcoder 打败了我 ;)
@glowcoder 是的,将“1,000,000”转换为值 1000000 的 int 正是我的意思。谢谢!
那是千位分隔符,而不是小数分隔符。
@KarlKnechtel 实际上取决于您来自哪里。

n
nyg

实际上,valueOf 在内部使用 parseInt。区别在于 parseInt 返回一个 int 原语,而 valueOf 返回一个 Integer 对象。从 Integer.class 源考虑:

public static int parseInt(String s) throws NumberFormatException {
    return parseInt(s, 10);
}

public static Integer valueOf(String s, int radix) throws NumberFormatException {
    return Integer.valueOf(parseInt(s, radix));
}

public static Integer valueOf(String s) throws NumberFormatException {
    return Integer.valueOf(parseInt(s, 10));
}

至于用逗号解析,我不熟悉。我会对它们进行消毒。

int million = Integer.parseInt("1,000,000".replace(",", ""));

谢谢你。当我从数据库中提取一个 int 并尝试将它从 String 转换为 Java 中的 int 时,我正在使用 Integer.valueOf 并获得 NullPointerException。不是字符串到整数。我不得不改用 Integer.parseInt() 。
使用格式作为值:million.replace(/,/g, "");
C
Community

第一个问题Difference between parseInt and valueOf in java?

第二个问题:

NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
Number number = format.parse("1,234");
double d = number.doubleValue();

第三个问题:

DecimalFormat df = new DecimalFormat();
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setDecimalSeparator('.');
symbols.setGroupingSeparator(',');
df.setDecimalFormatSymbols(symbols);
df.parse(p);

我相信他的意思是解析 "1,000,000" --> (int)1000000,而不是欧洲小数。
如果整数有小数,他为什么要解析它? :-)
好吧,这就是您收集需求时的方式。 :-)
@ateiob 被称为“数字组分隔符”或通常是“千位分隔符”。
@glowcoder 就像一个有趣的花絮,我认为该分隔符的名称并不是正式的“数千个东西”,原因很简单,因为存在其他组中的组号(即不是 3s)的语言环境。在 Michael Kaplan 的博客上阅读相关内容 - iirc Indian 就是一个例子(我认为他们将其分成 4 对?)。所以“分组分隔符”对国际观众来说是有意义的;)
J
Joe

Integer.valueOf() 返回一个整数 object,而 Integer.parseInt() 返回一个 int primitive


P
Paul Roub

这两种方法的区别在于:

parseXxx() 返回原始类型

valueOf() 返回该类型的包装对象引用。


T
Tomasz Nurkiewicz

parseInt()String 解析为 int,而 valueOf() 还将此 int 包装到 Integer 中。这是唯一的区别。

如果您想完全控制解析整数,请查看具有各种语言环境的 NumberFormat