Okapi Project   Web technological site for the beginner... Top

特定のタイトルのみ表示を変えよう!

先ほどのプログラムを動作させると、green と出力されません。

これは、if 文を使って比較する時に誰もが1回は間違えるところです。
green と出力されないということは、if 文の else のロジックが動いていると言うことなので、if 文の条件式の title と greenTitle が等しくないと言うことです。
では、if (title == greenTitle){ の直前で、title と greenTitle の値を System.out.println() で出力してみましょう。

出力してみると、どちらも「オカピ」と出力されます。しかし、false として扱われてしまいます。
これは、 == 演算子を使ってオブジェクトを比較すると、値が等しいか比較するのでなく、同じインスタンスであるか比較します。なので、greenTitle と greenTitle を比較すると、同じインスタンスなので true となりますが、同じインスタンスでない title と greenTitle を == 演算子で比較すると false となります。

詳しくは次のページで紹介します。

green と出力されないプログラム。

オカピ新聞
ランランランド新聞
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]);
            }
        }
    }