这是我的代码:
Log.d("inf", loader);
if (loader == "Klasse"){
Log.d("inf", "Klasse yes");
OPTS = new String[] { //Something };
} else {
Log.d("inf", "Klasse no");
OPTS = new String[] { //Something };
}
在第一行中,输出正好是“Klasse”,但下一个输出是每次“Klasse no”。加载器String设置如下:
String loader = "";
Bundle exta = getIntent().getExtras();
if(exta !=null) {
try {
json = new JSONObject(exta.getString("json"));
loader = exta.getString("order");
} catch (JSONException e) {
e.printStackTrace();
}
}
你们有什么想法错了吗?
答案 0 :(得分:11)
==
比较运算符比较引用而不是值。您需要比较这些值,因此需要使用equals()
方法。
if (loader.equals("Klasse"))
答案 1 :(得分:0)
身份(==
)和平等(equals()
)之间存在差异。身份测试是否对象指针是相同的,所以几乎从来都不正确。平等测试对象“值”是否相同,所以它几乎总是你需要的。
答案 2 :(得分:0)
字符串比较应始终使用equals方法完成。
if(loader.equals("Klasse")) { .... }
这是因为String是一个类,并且通过使用'=='来检查它们是否是同一个对象,而不是它们。 Equals会检查您比较的字符串是否相等。
答案 3 :(得分:0)
如果==或===不起作用,请使用.equals