8.
論理演算
論理演算
論理演算は、比較演算子で左の値と右の値を比較します。結果は論理型(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 以下 |
論理演算の例
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ではデータ型の宣言が必須なので、比較演算は同値で処理しています。
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型でデータ型が違う比較演算は、コンパイルエラーになります。
//Stringとintの比較はエラー
is_match = (str1 == number1);

String型をint型に変換
String型をint型に変換すると、比較することができます。
is_match = (Integer.parseInt(str1) == number1);
System.out.println(is_match);
結果
true
三項演算
三項演算は比較演算の結果で分岐して代入します。三項演算は「 ? 」と 「 : 」 で記述します。
値 = (比較演算) ? true のときの値 : false のときの値
三項演算は最初は難しいですが、理解できると、のちに学習する if や switch など使わずに処理できます。
三項演算の例
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);
- true true
- true false
- false true
- false false
問題2
つぎのプログラムの実行結果はどれですか?
float value1 = 20.f;
String value2 = "20";
boolean is_equal = (value1 == value2);
System.out.println(is_match);
- true
- false
- 20
- コンパイルエラー
問題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のダメージ