Android アプリ開発「MATRIX」

Androidアプリの開発に役立つサンプル集


文字列(String)の比較は ”==” ではなく ”equals” を使用する

文字列(String)は "==" で比較しない方が良い?

Java では文字列を ”==” で比較すると実際は「一致」しているのに「不一致」と判断されてしまうことがあります。これは、Java が文字列の中身ではなく文字列を格納している番地で比較しているからです。

文字列(String)の比較には "equals" を使用する

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