【Java】boolean型ってナニ?いつ使うの?

Java

みなさまこんにちは。
Numataです。

今回はboolean型(真偽値)について解説します。

Javaをイチから学んでいる方は、型の概念を理解できたところで、
このような疑問を持つでしょう。

・booleanっていつ使うの?
・booleanってどうやって使うの?
・booleanって要はyesかnoでしょ?0か1で良くない??

めちゃくちゃわかります!
私も当初、booleanの使い道のイメージが全くつかず、
学習を後回しにしていました。

いくつもプログラムに接するうちに、
booleanについてだんだん理解するようになりましたが、
接する度に混乱していました。笑

学習し始めから概念や使い方を掴んでおくと、
その後の学習がスムーズに進められるので、
型の概念を覚えた段階で、booleanについてもう一歩学習することを
おすすめします!

もちろん、学習時期はいつでも良いです!
ある程度学習を進めた中で、booleanが使われだして混乱しているあなたも必見です!

それではいきましょう!

もくじ

booleanは繰り返しや分岐の条件式で使われます。

boolean(真偽値)は、true か false を変数として持つ基本型です。

基本型なので、trueやfalseは文字列として持っているわけではありません。
あくまでも、trueかfalseを変数として持っているのです。

true・falseは、いろいろな感覚で理解している方がいると思います。
多いのは〇か×、yesかno あたりですかね。
感覚的にはそれでOKです。

大切なのは、変数に2択(true・false)のデータしか入っていないということです。

2択を変数として持っているという概念さえ押さえておけばOKです!


booleanの概念が使われるのは、条件式の判定時です。

if 文、while 文、for 文では、条件式を作ります。
if(条件式)、while(条件式)、for(初期化;条件式;後処理)

皆さんこの条件式をどのようにとらえているでしょうか。
例えば以下の例文。
おそらく”numが10以下の時”ととらえていると思います。

”numが10以下の時” 確かにそうです。
しかしJavaは、

条件式の中身がtrueの時

ととらえています。

どういうことでしょう。
今回のプログラムでいうと、
if文で、条件式が判定されます。
ここでの判定のされ方は、

num <= 10 の結果がtrueかどうか

です。つまり、今回は

0 <= 10

がtrueかどうかです。


<(小なり)や>(大なり)など比較演算子を用いた式の結果は、
trueかfalseで定義できます。


if文やwhile文等は、条件式の中身が、trueの時実行されます。

この考え方はめちゃくちゃ重要です。

分岐(if文)や繰り返し(while文やfor文)は
条件式の結果をboolean型で判断し、trueの時実行されます!

if文で見てみましょう

条件式の中身はboolean型で判定されるという見方をすると、
2つの例文の見方が変わってくると思います。

numは0だからif文が実行される
という思考回路から、

0 == 0はtrueだから実行される
という思考回路に変わっていることが重要です。

このような考え方をすると、
boolean型を戻り値として返すメソッドの使い方が見えてきます。

equalsメソッドはString型の文字列の比較をするときに使われます。
直前の変数(または文字列リテラル)と、引数に受け取った文字列を比較し、
同値ならtrue、異値ならfalseを返します。

if文は条件式がtrueの時、実行されますよね。

そのため、if文の条件式で戻り値がboolean型のメソッドを実行することができます。

while文で見てみましょう

条件式の中身はboolean型で判定されます。

繰り返しでも条件を考える思考回路を

numが10以下の間
から

num<=10がtrueの間
に変えましょう。

条件式をboolean型で判定するため、Javaは結局、式をboolean型に変形します。
ということは、元からboolean型を記述できるのです。

無限ループで用いられるwhile(true)という表現は、
条件式にそのままboolean型のリテラルが書かれており、
trueという値が変わることがないため、無限ループになっているわけです。

3つ目のwhile文を見てみましょう。
条件式にboolean型の変数を指定しています。
つまり、flg(Flagの略。よく使われます。)
という変数の中身がtrueである限り繰り返されます。

今回のプログラムは、num==5になったらfigにfalseを再代入しています。
flgがfalseになる→条件式がfalseになる→while文が終了する
という流れです。

このように、while文の条件式に変数を置いて起き、
while文の中で特定の条件に当てはまった時、falseに書き換える

という処理を組むこともあります!

どんな時も、条件式はboolean型で判定されます!

Javaが条件式を最終的にboolean型に変形しているから、
もともとboolean型のリテラルを書いてもOK!

booleanの考え方を身につけていると今後が楽です!

いかがでしたでしょうか。

重要なことは、条件式の見方を変えることです。

numが0以下の時

num <= 0 がtrueの時

この考え方さえつかめれば、今後条件式に困ることはなくなるでしょう!

ご覧いただきありがとうございました。

コメント

タイトルとURLをコピーしました