亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

字符串比較在具有相同值時返回 false

字符串比較在具有相同值時返回 false

富國滬深 2022-12-21 12:05:05
我在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); }}
查看完整描述

3 回答

?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

這可能是因為 == 比較地址時相等比較內容示例


String s1 = new String("sd"); 

String s2 = new String("sd");

System.out.println(s1 == s2); 

System.out.println(s1.equals(s2));

當第二個返回 true 時,第一個返回 false


查看完整回答
反對 回復 2022-12-21
?
四季花海

TA貢獻1811條經驗 獲得超5個贊

哦,這是一個很好的。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),這將返回相同意義上的布爾值。


查看完整回答
反對 回復 2022-12-21
?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

此行將btnText==messageReceived始終返回 false,因為兩者都沒有指向同一個對象。

equals 方法匹配內容,其中 as == 運算符匹配指向同一地址的對象。閱讀本文檔以了解有關 == 和 equals 的更多信息。 == 與等于

希望這對你有幫助


查看完整回答
反對 回復 2022-12-21
  • 3 回答
  • 0 關注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號