Java - 将整数转换为字符串[重复]

Posted

技术标签:

【中文标题】Java - 将整数转换为字符串[重复]【英文标题】:Java - Convert integer to string [duplicate] 【发布时间】:2011-07-01 13:25:12 【问题描述】:

给定一个数字:

int number = 1234;

将其转换为字符串的“最佳”方式是:

String stringNumber = "1234";

我曾尝试搜索(谷歌搜索)以寻找答案,但似乎没有多少人“值得信赖”。

【问题讨论】:

@lok​​esh 我正在查看字符串类中的 valueOf 实现 - hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/…。 toString 将在 String.valueOf 内部调用。某种意义上的代理。 【参考方案1】:

有多种方式:

String.valueOf(number)(我的偏好) "" + number(不知道编译器是怎么处理的,或许和上面一样高效) Integer.toString(number)

【讨论】:

@Trufa - 我会在这 3 个中使用 valueOf()。 它们实际上是相同的(最后一个调用第一个,第二个编译为第一个)。我更喜欢第一个 @Bozho 您的最后一条评论是 BACKWARDS。实际上,第一种方式调用了最后一种方式。 (请参阅 JDK 中的字符串源 grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/…。) int oopsPitfall = 0700; String.valueOf(oopsPitfall); @jba 如果在整数前添加一个零,它仍然被视为八进制。所以 String.valueof() 给出的其实是对的,不是坑。【参考方案2】:

整数类有静态方法 toString() - 你可以使用它:

int i = 1234;
String str = Integer.toString(i);

返回一个表示指定整数的 String 对象。参数转换为带符号的十进制表示并作为字符串返回,就像参数和基数 10 作为 toString(int, int) 方法的参数一样。

【讨论】:

【参考方案3】:

始终使用String.valueOf(number)Integer.toString(number)

使用 "" + number 是一种开销,并执行以下操作:

StringBuilder sb = new StringBuilder();
sb.append("");
sb.append(number);
return sb.toString();

【讨论】:

字节码编译器不能优化它吗?我希望优化器删除 sb.append("")。但是我对Java中的编译器优化了解不多。【参考方案4】:

这样就可以了。挺靠谱的。 :)

    ""+number;

澄清一下,除非您正在寻找微优化,否则这是可行的并且可以使用。

【讨论】:

非常感谢,这实际上是炒锅我不喜欢它(我不喜欢任何技术)我只是“感觉”它是一个黑客,而不是一个真正的解决方案(可能不是真的) . 你的答案有很多额外的开销(相当于 new StringBuilder().append("").append(number).toString()) @SolomonUcko 我可以知道您的这些信息的来源吗?如果正确,我想补充答案。 例如:***.com/a/47626/5445670【参考方案5】:

我知道如何将整数转换为字符串的方法是使用以下代码:

Integer.toString(int);

String.valueOf(int);

如果你有一个整数 i 和一个字符串 s,那么以下将适用:

int i;
String s = Integer.toString(i); or
String s = String.valueOf(i);

如果你想将字符串“s”转换成整数“i”,那么下面的方法会起作用:

i = Integer.valueOf(s).intValue();

【讨论】:

有哪些区别:Integer.toString(i) vs String.valueOf(i)【参考方案6】:

这是我用来将整数转换为字符串的方法。如果我做错了,请纠正我。

/**
 * @param a
 * @return
 */
private String convertToString(int a) 

    int c;
    char m;
    StringBuilder ans = new StringBuilder();
    // convert the String to int
    while (a > 0) 
        c = a % 10;
        a = a / 10;
        m = (char) ('0' + c);
        ans.append(m);
    
    return ans.reverse().toString();

【讨论】:

(1) 不适用于负数 [你是喜欢 unsigned int 的 C 开发人员吗?] (2) 依赖截断 [我们都知道假设是什么意思...] (3) 过度详细(4)为什么?! 重新发明***很有趣 除了@ingyhere 描述的问题外,它也不适用于前导零。 0123 作为输入变为 83【参考方案7】:

我经常使用的一个:

 Integer.parseInt("1234");

关键是,有很多方法可以做到这一点,都同样有效。至于哪个是最优化/最有效的,你得问别人。

【讨论】:

OP 想要相反,int -> String not String -> int. 您可以删除答案以恢复您的声誉。 ty +1。我想要这个,我想将字符串转换为整数,无论​​我搜索了多少,我都没有找到它,直到我找到了这个答案。

以上是关于Java - 将整数转换为字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在Java 8中将整数数组转换为字符串数组的最简单方法[重复]

在Java中从整数转换为二进制时保留整个字节[重复]

将字符串转换为整数 [重复]

将字符串转换为整数参数[重复]

将字符串列表转换为整数列表[重复]

将字符串数组转换为整数python [重复]