1

これが反対票を投じられるか、閉鎖されるかについて確信が持てません...これについて専門家の意見が必要です。

コンテキストはアプリケーションにあり、次のようなコードを記述しました。

//countryId is an integer, searchCity() expects two String parameters
loadCity(countryName , countryId + "");

次のような呼び出しを変更すると(変更を余儀なくされています)、違いはありますか?

loadCity(countryName, String.valueOf(countryId));

または、

loadCity(countryName, Integer.toString(countryId));

これにより、パフォーマンスの感覚に違いはありますか?

4

5 に答える 5

2

主な違いは読みやすさです。ここでは、マイクロベンチングは役に立ちません。私見String#valueOfは最高です。

于 2012-04-06T13:09:11.437 に答える
2

あなたが与えた例では、答えは実際に使用している「整数」のタイプに依存します。

loadCity(countryName , countryId + "");

Integerオブジェクトの場合、これは次と同等です:

loadCity(countryName, countryId.toString() + "");

一方、intプリミティブの場合、このコードは と同等です:

loadCity(countryName, String.valueOf(countryId) + "");

どちらの場合でも、ArjunShankar が指摘したように、コンパイラがコードを最適化した可能性は十分にあります。したがって、あなたの質問が「戻ってすべてのコードをリファクタリングする必要があるか?」である場合、「細かいことは気にしないでください」と答えるでしょう。ただし、将来的には、反対票を避けるために、より従来のアプローチを使用してください。

于 2012-04-06T13:10:13.023 に答える
1

のドキュメントからString.valueOf

「表現は、1 つの引数の Integer.toString メソッドによって返されるものとまったく同じです。」

整数以外にも使用String.valueOfできるため、使用します。つまり、int、double、bool などがあるかどうかを知る必要はありません。

于 2012-04-06T13:08:31.917 に答える
0

それらは同じです.... メソッド String.valueOf(int i) が暗黙的に Integer.toString(i, 10); を呼び出すためです。

于 2012-04-06T13:14:27.457 に答える
0

両方の方法を検索すると、これらはすべて同等であることがわかりました。

    String.valueOf(countryId) 
    Integer.toString(countryId) 
    countryId.toString() //Only if countryId is an Integer

彼らはすべて呼び出すので:

    Integer.toString(countryId, 10) 

唯一の違いは、異なる基数を使用する場合です。つまり、次のようになります。

   Integer.toString(countryId, radix)

countryId.toString()個人的には、整数を使用すると読みやすくなると思います。そうInteger.toString(countryId)でなければ行く方法です。しかし、それは私の個人的な意見です。パフォーマンスに関しては、 を使用する必要がありますInteger.toString(countryId, 10)

空の文字列を int に追加して String に変換するのは悪い習慣だと思います。

于 2012-04-06T13:16:21.423 に答える