文字列(String)の比較は ”equals” を使用
Java では文字列を ”==” で比較すると、実際には「一致」しているのに「不一致」と判断されてしまうことがあります。これは、文字列の中身ではなく文字列を格納している番地で比較しているからです。
したがいまして Java で文字列を比較する場合は「equals」を使用します。
string.equals("Sample");
サンプルコード(MainActivity.java)
public class MainActivity extends AppCompatActivity {
private String name;
private String name2;
private String name3;
private String name4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
name = "TEST";
name2 = "TE";
name3 = "ST";
name4 = name2 + name3; //"TEST"
//「==」で比較
if(name == name4){
Log.d("info===>","OK");
} else {
Log.d("info===>","NG...");
}
//「equals」で比較
if(name.equals(name4)){
Log.d("info===>","OK");
} else {
Log.d("info===>","NG...");
}
}
}
結果
同じ文字列同士を比較しています。「==」で比較すると不一致になりますが、「equals」で比較すれば一致と判定されるようになります。
2019-03-30 16:10:13.878 27489-27489/? D/info===>: TEST
2019-03-30 16:10:13.878 27489-27489/? D/info===>: NG...
2019-03-30 16:10:13.878 27489-27489/? D/info===>: OK
END