• ベストアンサー

おなじ名前のインスタンスを作成したらどうなる?

javaを勉強しています。 あるコードを読んでいるのですが、そのコードの中でfor文の中で ImageLoader loader = new ImageLoader(); という文で、loaderインスタンスを何回も作っていると思うのですが、同じ名前のインスタンスを作成すると、どうなるのでしょうか?更新のような感じになるのでしょうか? よろしくお願いします。

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

for( i = 0 ; i < 10 ; i++ ) {  ImageLoader loader = new ImageLoader();  ... } みたいな感じですかね。 i = 0 の時に作成された loader はループの本体が終了した時点でスコープから抜けるので破棄されます。 i = 1 の時に再び、ループの本体が実行されて「新しい」loader が作成されます。そしてまたループの本体が終了した時点で破棄されます。 その繰り返し。

nabewari
質問者

お礼

回答ありがとうございます。 ローカル変数のスコープってやつですね。分かりやすかったです。ありがとうございました。

関連するQ&A

  • インスタンスを同じ名前で作成できる?

    最近Javaの勉強を始めました。 入門書に従って進めているのですが、 例題に下記のようなプログラムが載っていました。 for文の中でインスタンスを作ってループさせているのですが、 下記のプログラムだと"fusen" "label"という同名のインスタンスが複数できることになると思います。 結果は複数の付箋がデスクトップに表示されるので参考書通りといえばそうなのですが、 同名のインスタンスが複数作成されてしまうというのは例えば同じ名前の変数が複数、しかも同じブロック内で作成されてしまうというのと同じような気がします。 後々3番目に作ったインスタンスのメソッドだけを使いたいとかと思った場合、 困るのではないかと思いますし、そもそも同じ名前のインスタンスを複数作れるというのは 有りなのでしょうか? 上手く説明できないのですが、何だか気持ち悪くてしょうがありません。 どなたかアドバイス頂けないでしょうか? (注) "Dodai"クラスは入門書付属の拡張ライブラリなのですが、 デスクトップに付箋を表示するためのクラスです。 "JLabel"クラスは"Java Platform Standard Edition 6"のものを使用しています。 ----------------------------------------------------------- public static void main(String[] args){ //外側の繰り返し for( int i = 1; i <= 9; i++ ){ //内側の繰り返し for( int k = 1; k <= 9; k++ ){ Dodai fusen = new Dodai(); JLabel label = new JLabel(); label.setText(i + "x" + k + "=" + ( i*k )); fusen.add(label); fusen.setSize(50, 30); fusen.setLocation(i * 60, k * 40); fusen.setVisible(true); } } }

    • ベストアンサー
    • Java
  • インスタンスの作成タイミング

    インスタンスの作成タイミングについて質問です。 インスタンスとは、クラスを実体化して固有の情報を持たせるものだと思っています。 一度インスタンスを作成して、その中でもう一度同じインスタンスを作成することは、どのような場合が考えられるでしょうか? (ex) a.javaの中で b.javaのインスタンスbbを作成しました。bbでmethod()を実行してその中でもう一度b.javaのインスタンスccを作成して、今度はcc.の中でmethod2()を実行しています。bbではAテーブルに変更をかけ、ccではBテーブルに変更をかけていますが、AテーブルとBテーブルはXという列で関連を持たせています。 つたない質問ですが、どなたかご教授ください。

    • ベストアンサー
    • Java
  • インスタンスについて

    個人的にJavaの勉強を始めた者です。 サンプルのソースをいただいたのですが、質問があります。 package xxxx.xxxxx.xxxxx; import yyyy.yyyy.yyyy; public final class ABC { /** 自クラスのインスタンス private static final ABC  _SELF  = new ABNC(); 中略 } 1.このように、自クラスのインスタンスを作成するのは何故でしょうか? 2.>_SELFのように "_"を先頭につけるのは、理由がるのでしょうか? サンプルを提供してくれた方には月曜まで連絡がとれません。 Javaのエキスパートの皆さん、よろしくお願いします。

    • ベストアンサー
    • Java
  • インスタンスの作成=初期化という意味?

    javaを勉強しているのですが、インスタンスの作成とはそのクラスにアクセスして利用できるよう準備をする。つまり、フロッピーディスクのフォーマットみたいなもの?(いわゆる初期化) ということでいいのでしょうか? もし違っていたら小学生でもわかるように教えてください。

  • インスタンスの作成について

    下記の方法にてHashtableのインスタンスを作成しようと思ったのですが has1.put("key",1); の場所でNullpointerException が発生します。 has1がNullになってしまうのですが 下記のような手法でインスタンスは作れないのでしょうか。 public class InstanceCreate { Hashtable has1; Hashtable has2; Hashtable has3; public static void main(String[] args) { InstanceCreate instance = new InstanceCreate(); instance.exe(); } public void exe() { Hashtable hash[] = {has1,has2,has3}; for(int i=0; i<hash.length;i++){ hash[i] = new Hashtable(); hash[i].put("key", "value"); } has1.put("key",1); } }

    • ベストアンサー
    • Java
  • インスタンス化で落ちてしまいます。

    早速ですがお願いします。 バッチ用classU(名前AAA)からjavabean(名前BBB)を呼び出すために 以下のようにインスタンス化をすると落ちてしまいます。 BBB bbb=new BBB(); ログをいれてみた結果そこで落ちているのは確定です。 またtry catchをいれてみたのですがExceptionをキャッチできてないようでログには何も出ませんでした。 このBBBというのはAAA以外にも普通のサーブレットCCCでもインスタンス化して使えていますので BBBに問題はないように思われます。 AAAを起動させるバッチファイルは全く別のところから java jp.co.xxxx.AAAという形で起動させています。 なぜインスタンス化というところで落ちてしまうのでしょうか? よろしくお願いします。

  • インスタンスオブジェクトとは何かについて教えて!!

    下記内容はあるサイトのインスタンスについての説明文です。 画像は、自分なりに理解したものです。 (1)メモリ上には記憶場所(=ポインタ)はない (2)var Aa = new Bb("13" , "smole");とscript内に追加されたことにより メモリ上に記憶場所(=ポインタ)が作成され、 BbオブジェクトつまりBb("13" , "smole");がその記憶場所(=ポインタ)に入る (3)そしてBb("13" , "smole");が入った 記憶場所(=ポインタ)にAaという名前を付ける。 考え方に間違いがあるでしょうか? ---------------------------------------------------- var Aa = new Bb("13" , "smole"); これは、BbクラスオブジェクトのBbコンストラクタをnew演算子を利用して起動しています。 new演算子は、メモリ上に記憶場所を確保して、Bbオブジェクトを作成した後、そのポインタを返す演算子です。 new演算子から返されたポインタは、Aaへ格納されます。この場合のAaをBbオブジェクトのインスタンスといいます。 また、new演算子でメモリ上に記憶場所を確保して作られたオブジェクトをインスタンスオブジェクトといいます。 つまり、 オブジェクト == インスタンスオブジェクト で、 インスタンス != インスタンスオブジェクト インスタンス != オブジェクト です。 ----------------------------------------------------

  • php インスタンスとオブジェクトの呼び方

    new obj = new Test(); という一文は、 「Testクラスのオブジェクト、objを作成している」という考えを持っています。 オブジェクトは物という概念で、 「Testクラス を new して、objインスタンスを作成している」 というのが正しいのでしょうか? 【objを Testオブジェクトと呼ぶのは間違っているのでしょうか? objは Testインスタンスと呼ぶのがやはり正しいのでしょうか?】 知り合いにも、インスタンスではなくオブジェクトと呼んでる人が多いのでわからなくなってきました。 ご教授お願いします。

    • ベストアンサー
    • PHP
  • 違うクラスのインスタンスを一度に作成できますか?

    javaをはじめたばかりの初心者です。 今は、パッケージと修飾子について、本を読んで勉強しています。 進み具合とは関係ないんですが、ふと疑問に思ったことがありましたので質問させていただきたいです。 Class1、Class2、Class3、Class4、……Class100 なんていうファイルがあったとします。 それらのクラスのインスタンスを作るとき、 Class1 c1 = new Class1(); Class2 c2 = new Class2(); Class3 c3 = new Class3(); ・ ・ ・ Class100 c100 = new Class100(); なんて、全部ひとつずつ書くのでしょうか? なんとなく、どうにかしていっぺんに作れそうな気がしたんです。 具体的に何が作りたいわけでもないですが、気になります。 そもそも、そんなにたくさんのクラスは作らないでしょうか。 本当に勉強始めたばかりで、まだ何がわからないかもわからないくらいですので、 変な質問だったらすみません。 よろしくお願いします。

    • ベストアンサー
    • Java
  • panel.add(new Button("1"));という書き方について。

    javaを学習している者です。 インスタンスを作成するには クラス名 変数名 = new クラス名(); というのが基本だと思うのですが、タイトルのような書き方(panel.add(new Button("1"))だと頭の中ではどのように考えればいいのでしょうか?変数名を持たないインスタンスを生成してパネルにのっけている、ということでしょうか?しかもこれがfor文で繰り返されていると for(int i = 0; i < 10; i++){ panel.add(new Button(Integer.toString(i))); } 余計にややこしくて分からなくなってしまいます。一応10個違うインスタンスをそれぞれ作っているのでしょうか? 本に載っていた書き方だし、エラーも出ないのでまず間違っていないのは分かるのですが、いまいちピンと来ないです・・・。 よろしくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう