LoginSignup
1
1

More than 3 years have passed since last update.

Java String型クラスの比較(==)が使えない理由

Posted at

Stringクラスの比較

if文などで、値が等しいかという比較を使う場面があります
例えば・・・

【Q1】
入力した数が答えと当たっているかどうか調べるプログラム

Q1.java
import java.util.Scanner;

class Q1 {
    public static void main(String[] args) {
        Scanner stdIn = new Scanner(System.in);

        System.out.print("数を入力:");
        int n = stdIn.nextInt();

            if (n == 5) {
            System.out.print("あたり");
            } else {
            System.out.print("はずれ");
            }
    }
}

この場合は、int型の数値の比較なので
==を使って比較できます。
では文字列の比較として、次の場合を見てみましょう。

【Q2】
なぞなそプログラム

Q1.java
import java.util.Scanner;

class Q2 {
    public static void main(String[] args) {
        Scanner stdIn = new Scanner(System.in);

        System.out.print("豆腐の原料は?:");
        String n = stdIn.next();

            if (judge.equals("大豆")) {
            System.out.print("あたり");
            } else {
            System.out.print("はずれ");
            }
    }
}

比較を==ではなく、equalsを使っています。
なぜequalsなのかというと・・・

クラス型(参照型)の比較で==を使うと、内容ではなく
データが入っている「アドレス」の比較になってしまいます。


Qiita用_equalsの比較1.PNG
Qiita用_equalsの比較2.PNG
Qiita用_equalsの比較3.PNG

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1