我正在做一个项目,从int到String的所有转换都是这样完成的:

int i = 5;
String strI = "" + i;

我不熟悉Java。

这是惯例吗,还是像我猜想的那样,出了什么问题?


当前回答

使用Integer.toString (tmpInt) .trim ();

其他回答

十多年前,我在一门本科水平的java入门课程中教授了这种技术。但是,我应该指出,IIRC,我们还没有接触到String和Integer类方法。

这种技术很简单,打字也很快。如果我所做的只是打印一些东西,我将使用它(例如,System.out。Println ("" + i);。然而,我认为这不是进行转换的最佳方式,因为当它以这种方式使用时,需要考虑一下才能意识到发生了什么。此外,如果性能是一个问题,它似乎更慢(下文以及其他答案)。

就我个人而言,我更喜欢Integer.toString(),因为它很明显会发生什么。String.valueOf()将是我的第二选择,因为它似乎令人困惑(看看darioo回答后的评论)。

我写了一些类来测试这三种技术:"" + I,整数。toString和String.ValueOf。每个测试只是将整数从1到10000转换为字符串。然后,我分别用Linux time命令运行了五次。Integer.toString()比String.valueOf()稍微快一次,他们捆绑了三次,String.valueOf()更快一次;然而,这种差异从来没有超过几毫秒。

“”+ i技术在每个测试中都比这两者都慢,除了一个测试,它比Integer.toString()快1毫秒,比String.valueOf()慢1毫秒(显然是在同一个测试中,String.valueOf()比Integer.toString()快)。虽然它通常只慢了几毫秒,但有一个测试慢了大约50毫秒。YMMV。

这是可以接受的,但我从来没有写过这样的东西。我更喜欢这样:

String strI = Integer.toString(i);

Personally I think that "" + i does look as the original question poster states "smelly". I have used a lot of OO languages besides Java. If that syntax was intended to be appropriate then Java would just interpret the i alone without needing the "" as desired to be converted to a string and do it since the destination type is unambiguous and only a single value would be being supplied on the right. The other seems like a 'trick" to fool the compiler, bad mojo when different versions of Javac made by other manufacturers or from other platforms are considered if the code ever needs to be ported. Heck for my money it should like many other OOL's just take a Typecast: (String) i. winks

考虑到我的学习方式以及在快速阅读其他代码时易于理解这样的结构,我投票给Integer.toString(I)方法。忘记一个ns或两个在Java如何实现的东西在后台vs. String. valueof (i)这个方法感觉对我来说是正确的,并确切地说正在发生什么:我有一个整数,我希望它转换为字符串。

有一个很好的观点已经说过几次了,也许只是在前面使用StringBuilder是一个很好的答案,构建混合文本和int或其他对象的字符串,因为这将在后台使用,对吗?

我只是把我的两分钱投到曼斯问题的答案中……微笑

经过思考后,编辑成我自己的答案:

好的,好的,我在思考这个问题,String. valueof (I)也很好,它说:我想要一个表示整数值的字符串。哈哈,英语比Java更难解析!但是,我留下我其余的答案/评论…我总是被教导使用方法/函数链的最低级别,如果可能的话,仍然保持可读性,所以如果字符串。valueOf调用Integer。那么为什么要用整个橙子,如果你只是要剥它,嗯?

为了澄清我对StringBuilder的评论,我用文字文本和int's的组合构建了很多字符串,它们最终变得又长又丑,调用了上面提到的嵌入在+'s之间的例程,所以在我看来,如果这些成为SB对象,无论如何,append方法有重载,它可能会更干净,只是继续使用它…所以我想我现在在这件事上要花5美分了,是吗?哈哈

使用"" + i是将数字转换为字符串的最短和最简单的方法。它不是最有效的,但它是最清晰的,这通常是更重要的。代码越简单,出错的可能性就越小。

Mostly ditto on SimonJ. I really dislike the ""+i idiom. If you say String.valueOf(i), Java converts the integer to a string and returns the result. If you say ""+i, Java creates a StringBuilder object, appends an empty string to it, converts the integer to a string, appends this to the StringBuilder, then converts the StringBuilder to a String. That's a lot of extra steps. I suppose if you do it once in a big program, it's no big deal. But if you're doing this all the time, you're making the computer do a bunch of extra work and creating all these extra objects that then have to be cleaned up. I don't want to get fanatic about micro-optimization, but I don't want to be pointlessly wasteful either.