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

给定一个数字:

int number = 1234;

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

String stringNumber = "1234";

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

【问题讨论】:

标签: java string numbers int


【解决方案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 我可以知道您的这些信息的来源吗?如果正确,我想补充答案。
    【解决方案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。我想要这个,我想将字符串转换为整数,无论​​我搜索了多少,我都没有找到它,直到我找到了这个答案。
    猜你喜欢
    • 2015-03-26
    • 2010-11-21
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    • 2022-11-28
    • 2011-03-31
    • 1970-01-01
    相关资源
    最近更新 更多