演算子ではなく、関数を使用しString.equals(String otherString)
て文字列を比較します==
。
これは、==
演算子がオブジェクト参照のみを比較するのに対し、String.equals()
メソッドは両方String
の値、つまりそれぞれを構成する文字のシーケンスを比較するためString
です。
String のソース コードからの equals() メソッド:
public boolean equals(Object anObject) {
1013 if (this == anObject) {
1014 return true;
1015 }
1016 if (anObject instanceof String) {
1017 String anotherString = (String)anObject;
1018 int n = count;
1019 if (n == anotherString.count) {
1020 char v1[] = value;
1021 char v2[] = anotherString.value;
1022 int i = offset;
1023 int j = anotherString.offset;
1024 while (n-- != 0) {
1025 if (v1[i++] != v2[j++])
1026 return false;
1027 }
1028 return true;
1029 }
1030 }
1031 return false;
1032 }
だからあなたは書くべきです
if(gender.equals("boy")){
}
または大文字と小文字を区別せずに比較する
if(gender.equalsIgnoreCase("boy")){
}
そしてヌル安全のために
if("boy".equals(gender)){
}
今後の参考:
String s1 = "Hello"; // String literal
String s2 = "Hello"; // String literal
String s3 = s1; // same reference
String s4 = new String("Hello"); // String object
String s5 = new String("Hello"); // String object
ここ s1 == s2 == s3 but s4 != s5
一方
anyOfAbove.equals(anyOtherOfAbove); //true