😀
【Java】equalsメソッド と == の違い(備忘録)
1.equalsメソッドとは
①.String型などの参照型同士の変数を比較する際に使用します。
②.参照先のインスタンスが同じ値を持っている場合、trueを返します。
equalsメソッドの文法
変数_1.equlas(変数_2);
2.サンプルプログラム
〇例1(boolean型変数を使用)
Main.java
public class Main {
public static void main(String[] args) {
String Password = "01234@";
String confirm_Password = "@98765";
// 参照先のインスタンスが同じ値を持っているか否か
boolean isCorrect = Password.equals(confirmPassword);
System.out.println(isCorrect);
}
}
実行結果
false
〇例2(equalsメソッドと==の比較)
Main.java
public class Main {
public static void main(String[] args) {
String word_1 = "test";
String word_2 = word_1;
// 参照先のインスタンスが同一か否か
System.out.println(word_1 == word_2);
// 参照先のインスタンスが同じ値を持っているか否か
System.out.println(word_1.equals(word_2));
}
}
実行結果
true
true
解説:
word_1変数をword_2変数に代入しています。
つまり、参照先のインスタンスは同じ値を持っています。
よって、equalsメソッドを使用すると「true」が戻ってきます。
〇例3
Main.java
public class Main {
public static void main(String[] args) {
String word_1 = "test";
String word_2 = "test";
// 参照先のインスタンスが同一か否か
System.out.println(word_1 == word_2);
// 参照先のインスタンスが同じ値を持っているか否か
System.out.println(word_1.equals(word_2));
}
}
実行結果
true
true
解説:
同じ文字列リテラルがプログラムに再登場した場合、
定数用メモリ空間にある文字列インスタンスへの「参照」が使い回しされます。
こうすることで、メモリ消費を抑制できます。
このような仕組みを「コンスタントプール」と呼びます。
文字列インスタンスへの参照が使い回されている場合、「true」が返ってきます。
3.その他
〇参考
・コンスタントプールとは
Discussion