先ほどのプログラムを動作させると、green と出力されません。
これは、if 文を使って比較する時に誰もが1回は間違えるところです。
green と出力されないということは、if 文の else のロジックが動いていると言うことなので、if
文の条件式の title と greenTitle が等しくないと言うことです。
では、if (title == greenTitle){ の直前で、title と greenTitle の値を System.out.println()
で出力してみましょう。
出力してみると、どちらも「オカピ」と出力されます。しかし、false として扱われてしまいます。
これは、 == 演算子を使ってオブジェクトを比較すると、値が等しいか比較するのでなく、同じインスタンスであるか比較します。なので、greenTitle
と greenTitle を比較すると、同じインスタンスなので true となりますが、同じインスタンスでない title と greenTitle
を == 演算子で比較すると false となります。
詳しくは次のページで紹介します。
オカピ新聞 ランランランド新聞 Java 新聞 オカピ臨時新聞 ランランランド新聞
// 配列に初期値を設定しています。
String[] titles = { "オカピ新聞", "ランランランド新聞",
"Java 新聞", "オカピ臨時新聞",
"ランランランド新聞" };
String greenTitle = "オカピ";
/**
* 新聞名を配列より 0 〜 4 まで、5つ出力します。
* ただし、オカピ新聞の場合、その後ろに green と出力します。
*/
public void titleOut() {
for (int i = 0; i < 5; i++) {
String title = titles[i].substring(0,3);
if (title == greenTitle) {
System.out.println(titles[i] + " green");
} else {
System.out.println(titles[i]);
}
}
}