猿问

字符串比较在具有相同值时返回 false

我在SQLite数据库中存储了字符串,这些字符串显示在Activity. 问题是,如果我将按钮的文本与字符串值进行比较,它会返回 false,而 equals 则显示它匹配。我很想知道当他们都一样的时候是谁在返回 false。


我已经尝试过 tostring 方法。


while (result.moveToNext()) {


 Button btn = new Button(this);

 btn.setWidth(100);

 btn.setHeight(40);

 //    btn.setSingleLine(); //keep text in single line don't break big words

 //    btn.setAutoSizeTextTypeUniformWithConfiguration(1, 15, 1,

 //          TypedValue.COMPLEX_UNIT_DIP);

 messageReceived = result.getString(1).trim();

 btn.setText(result.getString(1).trim());



 String btnText = btn.getText().toString().trim();



 String Value = Boolean.toString(btnText == messageReceived);

 Toast toast = Toast.makeText(this, Value, Toast.LENGTH_LONG);

 toast.setGravity(Gravity.CENTER, 5, 5);

 toast.show();


 if (messageReceived.equals(btnText)) {

  Toast toast2 = Toast.makeText(this, "matched", Toast.LENGTH_LONG);

  toast2.setGravity(Gravity.LEFT, 0, 0);

  toast2.show();

 } else {

  Toast toast2 = Toast.makeText(this, "Not Matched", Toast.LENGTH_LONG);

  toast2.setGravity(Gravity.LEFT, 0, 0);

  toast2.show();

 }



 Toast.makeText(this, "A: " + btn.getText() + " B: " + messageReceived, Toast.LENGTH_LONG).show();


 btn.setOnClickListener(this);

 grid.addView(btn);


 //messageReceived="pungi";


 if (btnText == messageReceived) {

  btn.setBackgroundColor(Color.YELLOW);

 }



}


富国沪深
浏览 154回答 3
3回答

HUX布斯

这可能是因为 == 比较地址时相等比较内容示例String s1 = new String("sd"); String s2 = new String("sd");System.out.println(s1 == s2); System.out.println(s1.equals(s2));当第二个返回 true 时,第一个返回 false

四季花海

哦,这是一个很好的。Boolean.toString(stringA == stringB)实际上是在做参考比较;也就是说,检查两个对象是否指向相同的内存位置。String.equals(),另一方面,比较值。String A = new String("five");String B = new String("five");System.out.println(Boolean.toString(A == B)); // false.System.out.println(Boolean.toString(A.equals(B))); // true此外, theBoolean.toString(A.equals(B))可以替换为A.equals(B),这将返回相同意义上的布尔值。

慕桂英3389331

此行将btnText==messageReceived始终返回 false,因为两者都没有指向同一个对象。equals 方法匹配内容,其中 as == 运算符匹配指向同一地址的对象。阅读本文档以了解有关 == 和 equals 的更多信息。 == 与等于希望这对你有帮助
随时随地看视频慕课网APP

相关分类

Java
我要回答