算術・比較・論理演算子の全体像

演算式は数値を計算する部分、値を比較する部分、複数の条件を結ぶ部分に分けると読みやすくなります。各段階の結果の型と値を確かめ、最後に代入や表示へ渡す値を求めます。

この単元で学ぶこと

  • 算術・比較・論理を段階に分ける
  • 優先順位と括弧から式の構造を読む
  • 式の結果の型に合う代入を判定する

本文解説

演算子を役割で分ける 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、論理はbooleanを組み合わせる。
  • 式の結果を代入先の型へ格納できるか確認する。
  • 一般に乗除→加減→比較→等価→&&→||の順に強く結び付く。
  • 括弧は結び付きを明示する。

間違えやすい点

  • 比較結果をintへ代入しない。
  • 文字列連結へ切り替わる+を見落とさない。
  • 優先順位表だけで副作用の評価順を決めない。

用語解説

式
値を計算する構文。変数、演算、メソッド呼出し等を組み合わせる。
結果の型
その式が生成する値の型。
優先順位
複数の演算子の結び付き方を決める規則。

関連教材

参考資料

教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。

確認問題の出題・採点や学習履歴の保存にはログインが必要です。