2

次のコード行についてどう思いますか?:

 String s= "10.0";
  float f = Float.valueOf(s).floatValue();//1

それは必要ですか?以下を使用するよりも、そのような構文を使用したほうがよいのはなぜですか。

float f = Float.valueOf(s);//2

オートボクシング機能を利用しても同じ結果が得られます。

要するに、私の質問は次のとおりです。2 番目の構文ではなく、最初の構文を選択する必要があるのはなぜですか? それらは完全に同じですか?

4

3 に答える 3

5

要するに、私の質問は次のとおりです。2 番目の構文ではなく、最初の構文を選択する必要があるのはなぜですか? それらは完全に同じですか?

どちらも中間オブジェクトを生成するため、どちらも使用しませんが、Floatほとんどの場合必要ありません。そして、それが必要とされる場所ならどこでも、ボクシングで動作するようにします。

Float.parseFloat(String)今のところ、プリミティブ float を生成するメソッドを使用するだけでよいでしょう。


類似性に関する限り、完全に同じではありません。2 つ目は~auto-unboxingからFloatまでを含みますが、最初のケースfloatにはありません。unboxing指定されたメソッドを使用して変換を行います。

于 2013-02-11T22:25:37.013 に答える
0

違いは、最初のものは明示的に float に変換するの
に対し、2 番目のものは outoboxed にすることです。

Java 1.3 ではオートボクシングは利用できません!

さらに、状況によっては、オートボクシングによって望ましくない結果が生じる可能性があります。
オートボクシングが失敗する状況については、次を参照してください。

Josh Bloch: 効果的な Java Second Edition

于 2013-02-11T22:25:18.760 に答える
0

f = Float.valueOf(s);

オートボクシング機能は、Java 5 の後に導入されました。このコードは、以前のバージョンの Java でコンパイルするとエラーになります。

于 2013-02-11T22:26:10.920 に答える