Java入門|場合に応じた処理

条件を使いこなせば、Javaの処理はもっと自由に組み立てられる

これまで学んできたプログラムでは、上に書いた文から下に書いた文へ向かって、順番に処理が進んでいきました。これはプログラムの基本的な流れで、とても大切な考え方です。ですが、実際のプログラムでは、いつも同じ処理だけを順番に行えばよいとは限りません。

たとえば、入力された値によって表示する内容を変えたいことがありますし、点数や条件によって処理を分けたいこともあります。さらに、ある条件を満たすときだけ特定の処理を実行し、それ以外のときは別の流れに進ませたい場面もあります。こうした仕組みを使えるようになると、プログラムはぐっと実用的になります。

Javaでは、このような処理の切り替えを行うために、条件や条件判断文を使います。条件が成り立っているのか、それとも成り立っていないのかを調べ、その結果に応じて実行する処理を変えていくわけです。

この章では、場合に応じた処理の土台になる考え方として、条件、関係演算子、条件判断文、if文、if~else文、if~else if~else、switch文、論理演算子といった内容を学んでいきます。まずはその入口として、条件とは何か、そして条件をどのようにJavaで表すのかをじっくり見ていきましょう。

条件とは何か

私たちは普段の生活でも、知らず知らずのうちに条件をもとに行動しています。

たとえば、こんなふうに考えることがあります。

  • テストの点数が高ければ、自分へのごほうびを買う
  • テストの点数が思ったより低ければ、復習の時間を増やす

このように、ある状況によって次の行動が変わるとき、その判断の基準になっているのが条件です。

Javaでも考え方は同じです。
プログラムの中で、ある状態ならこの処理を実行する、そうでなければ別の動きをする、という流れを作るために条件を使います。

たとえば、今の例なら、

点数が十分高い

ということが条件にあたります。

ただし、Javaではこのような日本語の文章をそのまま条件として書くわけではありません。Javaでは、条件はとして表します。そして、その式は評価されると、必ず次のどちらかの値になります。

  • true
  • false

true は、その条件が成り立っていることを表します。
false は、その条件が成り立っていないことを表します。

つまり、Javaにおける条件とは、評価した結果が true または false になる式のことです。

true と false の考え方

ここは条件を理解するうえでとても大切なポイントです。
Javaでは、条件はあいまいなものではなく、必ず true か false のどちらかではっきり決まります。

たとえば、「点数が80点以上である」という条件を考えてみましょう。
この条件は、点数によって次のように判断されます。

点数の状態条件の結果
80点以上true
80点未満false

この表を見るとわかるように、条件はそのときの状況を調べて、成り立つなら true、成り立たないなら false になります。

ここで大切なのは、条件が単なる文章ではなく、プログラムの中では値をもつ式として扱われることです。第4章で学んだ式の考え方を思い出すと、理解しやすいですね。数値を計算する式が数値になるように、条件を表す式は true または false になるわけです。

条件をJavaの式で表す

では、条件をJavaの式で表すとどうなるのでしょうか。

私たちは数学で、4は2より大きいことを次のように表せます。

4 > 2

この式は正しいので、Javaでは true と評価されます。

一方で、次の式はどうでしょうか。

4 < 2

こちらは正しくないので、Javaでは false と評価されます。

つまり、Javaでは大小比較や一致・不一致を表す式によって条件を書けるということです。

表にすると、次のようになります。

条件式評価結果意味
4 > 2true4は2より大きい
4 < 2false4は2より小さくない

このように、条件式は評価されると true または false という値になります。
これが、条件の基本的なしくみです。

この図では、条件式がただ書かれているだけではなく、評価されて結果をもつことを表しています。

4 > 2 は正しいので true になります。
4 < 2 は正しくないので false になります。

このように、条件式はプログラムの中で判断材料として使われ、その判断結果が true か false という形で表されます。この考え方がわかると、後で登場する if文 などの条件判断文も理解しやすくなります。

関係演算子とは何か

条件を作るときに使う > や <、== などの記号には名前があります。
これらは関係演算子と呼ばれます。

関係演算子は、左辺と右辺の関係を調べ、その結果を true または false で返します。つまり、条件を作るための道具だと考えるとわかりやすいです。

Javaでよく使う関係演算子を表にまとめると、次のようになります。

演算子式がtrueとなる場合
==左辺と右辺が等しい
!=左辺と右辺が等しくない
>左辺が右辺より大きい
>=左辺が右辺以上である
<左辺が右辺より小さい
<=左辺が右辺以下である

どれもこれから何度も使うものなので、少しずつ意味に慣れていきましょう。

関係演算子をひとつずつ見てみよう

== は等しいかどうかを調べる

== は、左右の値が同じかどうかを調べる演算子です。

6 == 6

これは true になります。
左右が同じだからです。

6 == 9

これは false です。
同じ値ではないからです。

!= は等しくないかどうかを調べる

!= は、左右の値が異なるときに true になります。

6 != 9

これは true です。
6 と 9 は異なるからです。

6 != 6

これは false です。
同じ値なので、等しくないとはいえません。

> は左辺が右辺より大きいかを調べる

8 > 3

これは true です。

2 > 7

これは false です。

>= は左辺が右辺以上かを調べる

= は、左辺が右辺より大きい場合だけでなく、等しい場合も true になります。

8 >= 8

これは true です。

10 >= 8

これも true です。

5 >= 9

これは false です。

< は左辺が右辺より小さいかを調べる

2 < 5

これは true です。

9 < 1

これは false です。

<= は左辺が右辺以下かを調べる

<= は、左辺が右辺より小さい場合と、等しい場合の両方で true になります。

4 <= 4

これは true です。

2 <= 9

これも true です。

9 <= 4

これは false です。

関係演算子を使った条件の例

それでは、関係演算子を使った条件をいくつか見てみましょう。

5 > 3
5 < 3
a == 6
a != 6

これらの条件は、次のように考えられます。

条件式結果の考え方
5 > 35は3より大きいので true
5 < 35は3より小さくないので false
a == 6aが6なら true、それ以外なら false
a != 6aが6でなければ true、6なら false

数値どうしを比べる条件は、その場で結果を判断しやすいですね。
一方で、変数を使った条件は、その変数の中身によって評価結果が変わります。

変数を使った条件

実際のプログラムでは、条件の中に変数を使うことが非常に多いです。
なぜなら、プログラムは固定された数値だけでなく、入力された値や計算結果をもとに動くからです。

たとえば、次の条件を見てみましょう。

a == 6

この条件は、変数 a の中身が 6 のときに true になります。
a に 3 や 10 が入っていれば false です。

同じように、

a != 6

は、a が 6 ではないときに true になります。

表にすると、次のように整理できます。

aの値a == 6a != 6
6truefalse
3falsetrue
10falsetrue

このように、変数を含む条件は、変数の値しだいで true にも false にもなります。ここがとても大事です。プログラムはこの性質を利用して、入力内容や計算結果に応じた動きを実現しています。

この図では、a == 6 という条件が、いつでも同じ結果になるわけではないことを表しています。

5 > 3 のような固定の条件は、評価結果も固定です。
しかし、変数を使った条件は、その時点の値によって true にも false にもなります。

この考え方は、この先の条件判断文を理解するうえで欠かせません。プログラムは、変数の中に入っている値を見て、進む道を変えていくからです。

== と = の違いに注意する

ここは特に間違えやすいところなので、しっかり意識しておきたいポイントです。

= は代入演算子です。
一方で == は関係演算子です。

見た目は似ていますが、役割はまったく違います。

演算子名前役割
=代入演算子右辺の値を左辺の変数に入れる
==関係演算子左辺と右辺が等しいかどうかを調べる

たとえば、

a = 6

は、a に 6 を代入する意味です。

一方で、

a == 6

は、a が 6 と等しいかどうかを調べる意味です。

プログラムを書いていると、この2つはとても間違えやすいです。特に条件式を書くときに = と書いてしまうと、思った通りに動かない原因になります。見た目が少し似ているからこそ、丁寧に入力することが大切です。

!= や == は2文字で1つの演算子

もうひとつ大事なのは、!= や == はそれぞれ2文字で1つの演算子だということです。
そのため、途中に空白を入れてはいけません。

たとえば、次のような書き方は正しくありません。

a ! = 6
a = = 6

正しくは次のように書きます。

a != 6
a == 6

小さな違いに見えるかもしれませんが、プログラムではこうした細かな書き方がとても重要です。特に比較演算子は頻繁に使うので、早いうちに正しい形を身につけておくと安心です。

条件を読む力をつける

条件を学ぶときは、ただ演算子を暗記するだけでなく、その条件が何を意味しているのかを自然に読めるようになることも大切です。

たとえば、次のように読み替えられるようになると、コードを読む力がぐっと上がります。

条件式日本語での意味
score >= 80score が80以上である
age < 20age が20未満である
num == 0num が0と等しい
answer != 1answer が1ではない

このように、条件式を見たら「どんなときに true になるのか」を考える習慣をつけると、あとで if文 や switch文 を学ぶときにもスムーズに理解できます。

場合に応じた処理の土台になる考え方

ここまで見てきたように、場合に応じた処理を行うためには、まず条件の考え方を理解する必要があります。

  • 条件は true または false になる式である
  • 条件は関係演算子を使って作る
  • 変数を使うと、条件の結果はその値によって変わる
  • = と == は意味が異なる
  • != や == は2文字で1つの演算子である

これらはどれも、これから学ぶ条件判断文の土台になります。

この先、if文 や if~else文 を使うときには、条件を評価した結果に応じて処理の流れを変えていきます。つまり、条件のしくみがわかっていないと、その先の文法も理解しにくくなってしまいます。

逆にいえば、ここをしっかり押さえておけば、条件分岐の学習がとても楽になります。今はまだ入り口ですが、この部分はJavaでより実用的なプログラムを書くための大切な基礎になります。