Javaのインスタンス化について質問です。


class a {
public static void main(String[] args) {
System.out.println("A");
}
}

このプログラムでインスタンスはありますか?でしたら、それは何ですか?
また、違えば、例えばどういうのがプログラム中のインスタンスですか?
ソースを書いて教えて下さい!簡単なプログラムでお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/11/17 20:40:03

回答4件)

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149

現状では単なる文字の羅列です。
(ソースコード a.java)
  ↓
コンパイルで実行可能な状態になります。
(クラスファイル a.class)
  ↓
インスタンス化
実際に動く状態になればインスタンスです。
(直接実行 java a.class あるいは他のクラスで利用 new a)

http://q.hatena.ne.jp/1383527402

id:rsc96074 No.2

回答回数4502ベストアンサー獲得回数437

 static だから、インスタンスの生成は不要かも。(^_^;
※参考URL
http://nobuo-create.net/java-beginner-21/

id:a-kuma3 No.3

回答回数4971ベストアンサー獲得回数2153

このプログラムでインスタンスはありますか?でしたら、それは何ですか?

あります。
System.out は、java.io.PrintStream クラスのインスタンスです。

自分で new して作らなくても、用意されているインスタンスというのがあります。

id:windofjuly

「自分で new しなくても、インスタンス化されるクラスが用意されています」だと思いますが…。

それはさておき、
7667SMさんが難しく考えすぎなのか、私が考えすぎなのか…、
よくわからなくなってきました…。

根底の部分は、これだけの話のはずなのですが…。
1.自作のクラスを呼び出せば実体化(インスタンス化)されてインスタンスとなる。
2.既存のクラスを呼び出した場合も実体化(インスタンス化)されてインスタンスとなる。

2013/11/11 04:35:36
id:a-kuma3

「自分で new しなくても、インスタンス化されるクラスが用意されています」だと思いますが…。

文字でニュアンスを伝えるのは難しいですが、ぼくのイメージはちょっと違います。
というか、その文章からぼくが受けるイメージと、ぼくが回答に書いたときにイメージしていたことがちょっと違います。
例えば、質問にある System.out は、java.io.PrintStream のインスタンスですが、

  • 自分で java.io.PrintStream クラスのインスタンスを作ることもできる
  • あらかじめ用意されている java.io.PrintStream のインスタンスは、System.err もある

うぃんどさんが書いてくれた文章から、ぼくが受けるイメージは、「そのクラスのインスタンスは、明示的に new しなくても良い」です。
# そういう意図は無いのかもしれませんが。

7667SM さんは、本当に「インスタンスって何?」と思ってるだけなんだと思います。
ぼくも手続型言語から OO に手を付けたクチなので、とても分かります(と、思い込んでます)。

java のようなオブジェクト指向な言語の中では、「クラスを呼び出す」という言い方に違和感があります。
クラスをインスタンス化して、それに対してメッセージを送る(メソッドを呼び出す)というイメージです。
順番として、働きかける相手があって、その次にアクションがある。
だから「インスタンス化 (instantiation)」という言い方が使われるのだと思います。

実行モジュールのプロセスイメージを「インスタンス」と呼ぶ流儀は知ってます(Win32API とかをバリバリ使ってたときもあったので)。
前の質問でも「Javaの……」あったので、触れませんでした。

2013/11/11 17:12:04
id:kenichiice No.4

回答回数49ベストアンサー獲得回数7

例示されたプログラムには、次のインスタンスがあると言えると思います。

  • メソッドmain()のパラメータargsが参照している、「String配列のインスタンス」。
  • argsが参照している配列が参照している、「Stringクラスのインスタンス」。ただ、argsが参照している配列の要素数が0の場合はこのインスタンスは存在しませんね。
  • Systemクラスのstaticフィールドoutが参照している、「PrintStreamクラスのインスタンス」。
  • "A"という文字列リテラルが参照している、「Stringクラスのインスタンス」。

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

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

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

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

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