- ベストアンサー
ラッパークラスのオブジェクト作成について教えてください。
ラッパークラスのオブジェクト作成について教えてください。 ラッパークラスのオブジェクト作成には ・new演算子を使ってインスタンス化する方法 ・ラッパークラスのstaticメソッドを呼び出す方法 の2つの方法があると書籍に書いてありました。(SJC-Pのテキストです) では Integer i = 1000; のような記述はどうでしょうか? Integerはintのラッパークラスと思うのですが、iはインスタンスじゃないという事でしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ソースがそのように「置き換えられて」というよりも、 そのように書かれたソースをコンパイルした時の結果と同じようなバイトコードをコンパイラが生成する、 といったほうが正確かも。コンパイラがそれをどう実現するかまでは規定されていないと思う。 もちろん、ソースレベルの置換後に改めてコンパイルするようなコンパイラもどこかにあるかもしれない。 注意すべきは、コード実行時のオートボクシング部分は変換用のメソッドを呼ぶことになるので、 それを明示的にプログラマが書いたコードと実行効率的には変わらないこと。 これはソースを書く時のプログラマの負担を減らすことが主な目的。
その他の回答 (1)
- vaguechat
- ベストアンサー率85% (47/55)
それはauto-boxingというJDK5から加わった言語仕様。 実際にコンパイラが生成したバイトコードではその2つの方法のどちらかが使われる。 SunのJDKのコンパイラは、 Integer i = Integer.valueOf(1000); に相当するコードを吐く。
お礼
ご回答ありがとうございます。 Integer i = 1000; という記述は、auto-boxingによって Integer i = Integer.valueOf(1000); に置き換えられて実行するということでしょうか?
お礼
そうなのですか。 ありがとうございます、よくわかりました。