下記のようにfor文の中で変数宣言し、何らかの値を設定するような処理があるとします。 この場合、bar変数は毎回インスタンスが作成されるのでしょうか? for(int i = 0; i < 10; i++) { Hoge bar = getBar(); } 毎回、インスタンスが作成されるならば、下記のようにするべきでしょうか? Hoge bar; for(int i = 0; i < 10; i++) { bar = getBar(); }
getBar() メソッドの実装次第です。
getBar() が呼ばれる度に、Hoge クラスのインスタンスを new してなければ、
ループの度にインスタンスが作成されることはありません。
少なくとも、質問文にある二つのコードは、変数のスコープが違うだけで、インスタンスの生成については、全く等価です。
もしかしたら、id:Gaasu さんは c++ 経験者ですか?
java は、メソッド呼び出し時の引数も戻り値も「参照渡し」しかありません。
そもそも、スタックに生成されるインスタンスが無く、ヒープにしかインスタンスは生成されません。
よく分かりました。
ありがとうございました。
コメントはまだありません
これ以上回答リクエストを送信することはできません。制限について
ログインして回答する
よく分かりました。
ありがとうございました。