プロが教えるわが家の防犯対策術!

java言語超初心者です。以下のコードを入力しました。
class MyCls1 {
String name;
int count;

public void look() {
System.out.println("名前" + name + "個数" + count);
}
}

class MyCls2 {
String name;
int count;

public void look() {
System.out.println("なまえ" + name + "こすう" + count);
}

public String toString() {
String str = "MyCls2:name = " + name + "count=" + count;
return str;
}
}

public class JaCls06 {
public static void main(String args[]) {
MyCls1 bbb = new MyCls1();
bbb.name = "AAA";
bbb.count = 111;
bbb.look();
System.out.println(bbb);

MyCls2 dd = new MyCls2();
dd.name = "BBB";
dd.count = 2222;
dd.look();
System.out.println(dd);

String ee;
ee = dd.toString();
System.out.println(ee);
}
}
実行結果が
名前AAA個数111
MyCls1@19821f
なまえBBBこすう2222
MyCls2:name = BBBcount=2222
MyCls2:name = BBBcount=2222
なんですが、2行目以降の結果がどの行を反映して出てきたのかが全くわかりません。どうか、教えてください。初歩的な質問で申し訳ないです。

A 回答 (5件)

>これは今勉強に使っている本の


>練習問題です。

そんな本は、処分することを個人的にはお勧めします。
まずは、次に上げる統合開発環境Eclipseの解説書のどちらか(または両方)を
入手することを強くお勧めします。
これらの解説書には、ほぼ全ての機能が包括的に解説されていますので、
実用上も辞書的に活用できて非常に有益です。


Eclipse3.3 完全攻略 宮本 信二
¥ 2,940
http://www.amazon.co.jp/Eclipse3-3-%E5%AE%8C%E5% …

開発のプロが教える標準Eclipse 3.3完全解説 (デベロッパー・ツール・シリーズ) 鈴村 幸太郎 ほか
¥ 2,940
http://www.amazon.co.jp/%E9%96%8B%E7%99%BA%E3%81 …



それと、Javaの解説書としては、次のリンク内に示したものをお勧めします。
http://okwave.jp/qa3929030.html


Javaの入門書には、全くレベルの低いものが沢山あります。
インターネット時代ですから、簡単な入門レベルの情報は、WEB上に散在しており、
個人的にはそれで十分かと思います。
せっかくお金をつぎ込むのなら、長い将来にわたって役に立ちそうな、本格的な
書籍を購入するべきだと考えます。
    • good
    • 0
この回答へのお礼

ご親切にありがとうございます。

参考にする本は、おっしゃる通りたくさん出回っていて、
全くの初心者である私にはどれが良い本なのかが
わからなくて、困ってもいました。

大変参考になりました。

お礼日時:2008/06/16 15:32

>class MyCls {


>...
>int ins_hensu = 0;
>...
>public void ins_method() {
>...

これは、何かの問題なのでしょうか?
可能ならば、こんな問題は解かない事が得策です。

クラス名から変数名,メソッド名が基本的なJavaの名付規約に
反していますし、全く無意味な名前になっていることがまず問題です。

この様な問題を解いていっても、全くオブジェクト指向設計の考え方が
身に付くわけではないので、注意が必要です。
言ってみれば、覆面算や数独といった数字パズルをいくら解いても、
数学のセンスは全く磨かれないのと同じです。


オブジェクト指向設計の最大の利点のひとつは、実用的で現実的な問題を
オブジェクトとして定義できて、その解決手段を単純なメソッドの組合せで、
現実に即した方法で解決が図れるという点です。

ですから、非現実的なオブジェクト(クラス)を定義することには、
全く意味がありませんし、その様なクラスならば誰が見ても理解できないような
クラスを作ることも簡単にできますし、それが解ったからと言って何の意味も
ありません。


この問題を考えるような時間が有るのならば、統合開発環境を入手して、
デバッガやプロファイラ等の使い方からJavaDocの書き方等をマスターすべきです。
いまどき、テキストエディターでプログラミングを書いて、コマンドプロンプトで
コンパイルするような方法を知っていることは、これも全く意味がないでしょう。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

これは今勉強に使っている本の
練習問題です。

お礼日時:2008/06/16 10:28

意見が分かれるところですが、私は、今のあなたのレベルならば、eclipseなどの開発環境を使うのはお勧めしません。



例に出ているプログラムの出力内容が、どうしてそうなるのかということが、キチンと理解できるようになる事が大事だと思います。

簡単にヒントだけ書きます。
・System.out.println(引数);の引数は、参照型の場合は暗黙のうちにtoString()メソッドが呼ばれます。
・toString()メソッドをオーバーライドしていないクラスは、スーパークラスのtoString()メソッドが呼び出されます。
・ObjectクラスのtoString()メソッドの実装は「クラス名@XXXX」という文字列を返します。

本を何度も読み返してみてください。
そして何度もソースコードを追いかけてみてください。
理解できるまで何度も繰り返してください。
本当にJavaを理解したいのであれば、この回り道が必要だと考えます。

※なんちゃってサンデーアマグラマーで良ければ、いきなりeclipseで楽すればいいと思いますけどね。(eclipse本当に楽ですからねぇ)
    • good
    • 0

何がしたいのかわかりませんが、どの行を反映して出力されているかの回答は通りです。



public class JaCls06 {
public static void main(String args[]) {
MyCls1 bbb = new MyCls1();
bbb.name = "AAA";
bbb.count = 111;
bbb.look();
 ⇒名前AAA個数111
System.out.println(bbb);
 ⇒MyCls1@19821f

MyCls2 dd = new MyCls2();
dd.name = "BBB";
dd.count = 2222;
dd.look();
 ⇒なまえBBBこすう2222
System.out.println(dd);
 ⇒MyCls2:name = BBBcount=2222
String ee;
ee = dd.toString();
System.out.println(ee);
 ⇒MyCls2:name = BBBcount=2222
}
}

dyna_1550さんのアドバイス通り、トレースすれば一発でわかります。
上記はeclipseのデバッグによりステップオーバーで確認しました。
(ものの1分とかかりません)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

Java入門の本の通りに進めているのですが、何度読んでもわからないために質問させていただきました。

常に煮詰まってますが、がんばります。。。

お礼日時:2008/06/13 15:13

eclipseやNetBeansなどの統合環境を利用することをおすすめします。



ブレークポイントを利用すれば、どのように実行しているかトレース
できますので。

変数の内容も、いつセットされたか、詳細にたどれます。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
eclipseやNetBeansを使ってみましたが、これを使いこなすのもまた勉強がさらに必要ですね。

がんばります。。。。

めげそう。

お礼日時:2008/06/13 15:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!