文字列が等しい?等しくない?
プロジェクトjava01、パッケージstep05にクラス「Handan3」を作成し、次のプログラムを入力してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
package step05; import java.util.Scanner; public class Handan3 { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ Scanner scan = new Scanner(System.in); System.out.println("好きな果物を入力してください"); String str = scan.next(); boolean b; b = str.equals("みかん"); if(b==true){ System.out.println("1:私も好きです!"); } if(b==false){ System.out.println("1:ジュースにしてもおいしそうですね"); } } } |
入力が完了したら実行してください。そしてコンソールに「みかん」と入力してください。
プログラムを再実行してください。今度は「りんご」を入力してみてください。
入力した文字により表示されるメッセージが違います。既に気づかれたかと思いますが、16行目と19行目の条件によりメッセージを表示するか判断しています。
16 |
if(b==true){ |
19 |
if(b==false){ |
bはboolean型の変数で14行目で定義しています。boolean型とは2進数のことでtrue(真)かfalse(偽)の値しかもてません。
14 |
boolean b; |
この変数bに値を設定しているのが、15行目になります。
15 |
b = str.equals("みかん"); |
equals命令が文字列が等しいか判定する命令です。命令の「.」の前に比較文字列1を記述しかっこ()の中に比較文字列2を記述します。
equals命令により同じ文字列ならtrue、違う文字列ならfalseが返され変数bに格納されます。そしてbの値を16行目、19行目で判断しています。
省略した記述方法
一般的にはbooleanを使用せずに次のように記述することが多いです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
package step05; import java.util.Scanner; public class Handan3 { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ Scanner scan = new Scanner(System.in); System.out.println("好きな果物を入力してください"); String str = scan.next(); if(str.equals("みかん")){ System.out.println("1:私も好きです!"); } if(!str.equals("みかん")){ System.out.println("1:ジュースにしてもおいしそうですね"); } } } |
14行目のif文の中にequals命令が書かれています。equals命令は文字列が等しい時にtrue(真)となるので、if文の条件が成立し、if文内の処理が実行されるのです。
14 |
if(str.equals("みかん")){ |
17行目のif文の中にもequals命令が書かれていますが、その前に「!」があります。「!」は否定を意味しており、equals命令の判定を真から偽、偽から真に反転させます。
17 |
if(!str.equals("みかん")){ |
従って文字列が等しい時はtrue(真)が「!」によりfale(偽)となってif文内の命令は実行されません。逆に文字列が等しくない時はfalse(偽)が「!」によりtrue(真)となってif文内の命令は実行されます。
この部分が難しいと感じたならば、文字列比較をする際の定型的な書き方、として現段階では理解してください。進むにつれ理解が深まっていくはずです。