Java - 将整数转换为字符串[重复]
Posted
技术标签:
【中文标题】Java - 将整数转换为字符串[重复]【英文标题】:Java - Convert integer to string [duplicate] 【发布时间】:2011-07-01 13:25:12 【问题描述】:给定一个数字:
int number = 1234;
将其转换为字符串的“最佳”方式是:
String stringNumber = "1234";
我曾尝试搜索(谷歌搜索)以寻找答案,但似乎没有多少人“值得信赖”。
【问题讨论】:
@lokesh 我正在查看字符串类中的 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 - 将整数转换为字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章