※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。
こんにちは。こんぶです。
今日も、条件式について学んでいきましょう!
私の自己紹介等は、こちらからどうぞ。
また、Javaの学習を最初から進めていきたい方は、Java-1から見てみてくださいね。
条件式
今回は、前回の続きとして「文字列を比較させる式」についてと、条件式を書く時の注意点や、短絡評価についてお話していきますね。
文字列の比較
String型の変数や文字列を比較する条件式を書きたい場合、「==」ではない書き方をする必要があります。
Javaでは文字列を「==」で正しく比較できないときがあるからです。コンパイルエラーにはなりませんが、期待する結果が得られない可能性があります。
(どういうことなのか、詳しい内容は覚えなくても大丈夫ですが、気になる人もいるかなと思うので、「※「==」で文字列を正しく比較できない詳細を知りたい方へ※」より下に記載しておきますね。)
なので、文字列を比較する時には、「文字列型の変数.equals(比較相手の文字列)」のように記載し、比較相手の文字列には文字列リテラルや変数を指定します。
「文字列型の変数」と「比較相手の文字列」の内容が等しい場合は、式全体が「true」に置き換わりますね。
例えば、String型の変数「name」に入っている文字列が「こんぶ」と等しいという条件式を使って「if文」を書くと、「if(name.equals(“こんぶ”)){…」のようになります。
※「==」で文字列を正しく比較できない詳細を知りたい方へ※
「==」演算子で2つの文字列型変数に入っている値を比較した場合、メモリ上のアドレスを参照して比較するので、2つの変数の内容が同じでも別の変数の値なので「false」となってしまいます。つまり、2つの変数の内容が同じでも違っても「false」になってしまう可能性があるということですね。
一方、equalsで比較を行うと文字列の値を比較するので、2つの変数の内容が同じだった場合は、文字列の値は同じなので「true」となります。(もちろん、2つの変数の内容が違う場合は、文字列の値は違うので「false」となります。)
今理解するのは少し難しいかもしれませんが、今後進めていく中で理解できると思いますので、安心して学習を進めてくださいね。
条件式の注意点
「if文」や「while文」で用いる条件式は、評価結果が「true」か「false」になる式にしなければいけません。
なので、算術演算子を使用した式(例:a + 10)や代入演算子を使用した式(例:a = 10)は、評価結果が「true」か「false」にならないため条件式に利用することはNGです。
条件式の短絡評価
Javaでは、条件式の中に2つの条件があり前半部分を評価した時点で条件式全体の結果が確定した場合、続く後半部分の評価は行わず終了します。
無駄な評価をしないことで効率を高めており、これを「短絡評価」といいます。
今回のまとめ
★文字列を比較する時には、「文字列型の変数.equals(比較相手の文字列)」のように記載し、比較相手の文字列には文字列リテラルや変数を指定する
★条件式は、評価結果が「true」か「false」になる式にしなければならない
・短絡評価:前半部分を評価した時点で条件式全体の結果が確定した場合、続く後半部分の評価は行わずに終了すること
次回からは、分岐構文の種類について説明していこうと思います。
今回の内容のチャレンジ問題はこちらです→チャレンジ問題【Java-16】
次の内容に進む方はこちらです→【Java-17】分岐構文①if構文
それでは、こんぶはじゃ~
コメント