論理演算

論理演算は、比較演算子で左の値と右の値を比較します。結果は論理型(bool型)で左辺に代入できます。

// 結果は true か false
結果 = (値1 比較演算子 値2);

比較演算子

比較演算子は左の値と右の値を比較して、boolean型(trueかfalse)を判定し、条件式の分岐で利用します。下の表は比較演算子で一致すれば true を返します。

比較演算子 処理 判別
== A == B A と B が等しい
!= A != B A と B が等しくない
> A > B A が B より大きい
< A < B A が B より小さい
>= A >= B A が B 以上
<= A <= B A が B 以下

論理演算の例

sample/ItemCalculate.java
boolean is_match = false;

is_match = (price == 100);
System.out.println(is_match);

// 左項が右項より小さいか
is_match = (price < 100);
System.out.println(is_match);

// 左項と右項が等しくないか
is_match = (price != 100);
System.out.println(is_match);

// 左項が右項より大きいか
is_match = (price > 100);
System.out.println(is_match);

//左項が右項以上か
is_match = (price >= 100);
System.out.println(is_match);
結果
true
false
false
false
true

同値

同値とは

同値はデータ型と値が同じことを意味します。Javaではデータ型の宣言が必須なので、比較演算は同値で処理しています。

sample/ItemCalculate.java
String str1 = "20";
String str2 = "20";
int number1 = 20;
int number2 = 30;

//String同士の比較
is_match = (str1 == str2);
System.out.println(is_match);

//int同士の比較
is_match = (number1 == number2);
System.out.println(is_match);
結果
true
true

コンパイルエラー

String型とint型でデータ型が違う比較演算は、コンパイルエラーになります。

sample/ItemCalculate.java
//Stringとintの比較はエラー
is_match = (str1 == number1);

String型をint型に変換

String型をint型に変換すると、比較することができます。

sample/ItemCalculate.java
is_match = (Integer.parseInt(str1) == number1);
System.out.println(is_match);
結果
true

三項演算

三項演算は比較演算の結果で分岐して代入します。三項演算は「 ? 」と 「 : 」 で記述します。

値 = (比較演算) ? true のときの値 : false のときの値

三項演算は最初は難しいですが、理解できると、のちに学習する if や switch など使わずに処理できます。

三項演算の例

sample/ItemCalculate.java
price = 150;
int money = 200;
message = (money >= price) ? "購入できます" : "購入できません";
System.out.println(message);
結果
購入できます

演習

問題1

つぎのプログラムの実行結果はどれですか?

int temperature = 30
boolean is_hot = (temperature > 30);
boolean is_cold = (temperature < 10);

System.out.println(is_hot);
System.out.println(is_cold);
  1. true true
  2. true false
  3. false true
  4. false false

問題2

つぎのプログラムの実行結果はどれですか?

float value1 = 20.f;
String value2 = "20";
boolean is_equal = (value1 == value2);
System.out.println(is_match);
  1. true
  2. false
  3. 20
  4. コンパイルエラー

問題3

つぎのプログラムの実行結果はどれですか?

String character_name = "Tokyo";
String monster_name = "スライム";
int character_hp = 20;
int monster_hp = 5;
int damage = 10;
String battle_message = character_name + "のこうげき!";
String attack_message = (monster_hp > damage) ? "に" + damage + "のダメージ" : "はたおれた!";
battle_message += monster_name + attack_message;
System.out.println(battle_message);
  1. スライムのこうげき!Tokyoはたおれた!
  2. Tokyoのこうげき!スライムはたおれた!
  3. スライムのこうげき!Tokyoに3のダメージ
  4. Tokyoのこうげき!スライムに3のダメージ