算術・比較・論理演算子の全体像
演算式は数値を計算する部分、値を比較する部分、複数の条件を結ぶ部分に分けると読みやすくなります。各段階の結果の型と値を確かめ、最後に代入や表示へ渡す値を求めます。
この単元で学ぶこと
- 算術・比較・論理を段階に分ける
- 優先順位と括弧から式の構造を読む
- 式の結果の型に合う代入を判定する
本文解説
演算子を役割で分ける 120*3は数値360を計算します。120*3>=300はbooleanのtrueを計算します。120*3>=300&&memberはその比較結果と会員条件を結びます。一つの長い式でも、算術・比較・論理の三段階で中間結果を書けば追跡できます。
型が違う結果 int total=120*3;は数値を格納し、boolean expensive=total>=300;は条件を格納します。int expensive=total>=300;は比較がbooleanなので不正です。画面にtrueと表示することと数値1を格納することはJavaでは同じではありません。
記号の基本 算術は+,-,*,/,%、大小比較は<,<=,>,>=、等価比較は==,!=、論理は!,&&,||が基本です。=は右辺を代入する演算子で==とは役割が違います。記号一文字の違いで型や副作用が変わるため、略さず確認します。
優先順位で組み立てる 2+3*4>10&&trueは3*4を含む算術部分が14となり、14>10がtrue、最後にtrue&&trueがtrueです。括弧を使えば((2+(3*4))>10)&&trueと構造を示せます。高い優先順位は式の結び付きであり、オペランドの副作用を自由に並べ替える許可ではありません。
単項演算 -3は数値の符号を反転し、!trueは真偽を反転します。int n=3;boolean b=!n;は不正です。単項+は数値を正数へ変える絶対値演算ではなく、+(-3)は-3のままです。符号演算と否定演算を区別します。
整数か小数か 8/3は2、8.0/3は約2.666…です。8%3は商ではなく余り2です。double d=8/3;は整数商を変換して2.0です。計算を小数にしたいなら除算の片側をdoubleにし、演算時点の型を変更します。
条件を組み合わせる int age=20;boolean member=false;age>=18&&memberならfalse、age>=18||memberならtrueです。必要条件をすべて満たす場面はAND、少なくとも一つでよい場面はORです。!memberなら非会員を表すtrueになります。
連結と更新に注意する "n="+2*3は乗算後に連結して"n=6"です。"n="+2+3は左から連結し"n=23"です。またn++やn=5は変数を更新する副作用があります。問題では各段階を追い、実際のプログラムでは必要に応じて中間変数へ分けます。
図解
重要ポイント
- 算術は数値、比較はboolean、論理はbooleanを組み合わせる。
- 式の結果を代入先の型へ格納できるか確認する。
- 一般に乗除→加減→比較→等価→&&→||の順に強く結び付く。
- 括弧は結び付きを明示する。
間違えやすい点
- 比較結果をintへ代入しない。
- 文字列連結へ切り替わる+を見落とさない。
- 優先順位表だけで副作用の評価順を決めない。
用語解説
- 式
- 値を計算する構文。変数、演算、メソッド呼出し等を組み合わせる。
- 結果の型
- その式が生成する値の型。
- 優先順位
- 複数の演算子の結び付き方を決める規則。
関連教材
参考資料
教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。
確認問題の出題・採点や学習履歴の保存にはログインが必要です。