Javaについて質問です。

下記のようにfor文の中で変数宣言し、何らかの値を設定するような処理があるとします。
この場合、bar変数は毎回インスタンスが作成されるのでしょうか?

for(int i = 0; i < 10; i++) {
Hoge bar = getBar();
}

毎回、インスタンスが作成されるならば、下記のようにするべきでしょうか?
Hoge bar;
for(int i = 0; i < 10; i++) {
bar = getBar();
}

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2011/06/27 00:30:17
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

ポイント100pt

getBar() メソッドの実装次第です。

getBar() が呼ばれる度に、Hoge クラスのインスタンスを new してなければ、

ループの度にインスタンスが作成されることはありません。


少なくとも、質問文にある二つのコードは、変数のスコープが違うだけで、インスタンスの生成については、全く等価です。


もしかしたら、id:Gaasu さんは c++ 経験者ですか?

java は、メソッド呼び出し時の引数も戻り値も「参照渡し」しかありません。

そもそも、スタックに生成されるインスタンスが無く、ヒープにしかインスタンスは生成されません。

id:Gaasu

よく分かりました。

ありがとうございました。

2011/06/27 00:30:06

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません