iJava SE7 Silver の資格を目指し勉強中です。
長文で申し訳ありません。
要領を得ない質問なので、わかるところだけでも回答していただけると嬉しいです。
分からない点は
・8行目のequalsメソッドの使い方
・8行目のequalsメソッドの引数(Object obj)
・9行目のnull
・12行目のifはelse ifのことか?
・12行目に出てくるinstance ofの使い方
・13行目の(Sample)
・12~15行目で何をしているのかがわかりません。
1 public class Sample{
2 private int num;
3 private String name;
4 public Sample(int num, String name){
5 this.num = num;
6 this.name = name;
7 }
8 public boolean equals(Object obj){
9 if(obj == null){
10 return false;
11 }
12 if(obj instanceof Sample){
13 Sample s = (Sample) obj
14 return s.num == this.num
15 }
16 return false;
17 }
18 }
↑このクラスを利用する、以下のプログラムをコンパイル、実行したときの結果は?
1 public class Main{
2 public static void main(String@: args){
3 Sample a = new Sample(10, "a");
4 Sample b = new Sample(10, "b");
5 System.out.println(a.equals(b));
6 }
7 }
答えは「trueと表示される」です。
メインクラスの5行目 System.out.println(a.equals(b)); でaの参照先とbの参照先が同じかと
聞かれていると解釈しました。
equals(b)でequalsメソッドが呼び出されているのでSampleクラスのequalsメソッドを見ます。そこで引数の中身が
(Object obj)となっています。これは例えば(int num)のように考えて(Object obj)はオブジェクトしか引数として受け入れないということでしょうか。
そして、Sampleクラス9行目の if(obj == num)は引数が何も参照しない、
つまり、 Sample b = new Sample(10, "b");が
Sample b = new Sample();の時を表しているのでしょうか
そして、12~15行目のifのブロック{}では何をしているのでしょうか。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/09 07:03
2016/02/09 07:59
2016/02/09 08:27
2016/02/09 12:59