首页新闻找找看学习计划

接收到Handler传递出String类型数据后与原始String类型数据.equals()不相等的问题

0
悬赏园豆:30 [待解决问题]

服务器端代码:
public void xxx(){
     try{
            //一些操作
              ...............................................
           this.outString("钢厂关联物资成功!"); //给客户端的相应数据
        }catch(Exception e){
           e.printStackTrace();
           }
        }
客户端代码:
                      try {
new Thread() {
public void run() {
// 向服务器提交数据
String reponseStr0 = HttpUtil.formUpload(
Constant.URL_MAIN + "xxx.do",
text, pic);
System.out.println(TAG + "-->上传数据后服务器响应数据为: "
+ reponseStr0);
// 将服务器响应回传给UI线程
Message message = Message.obtain();
message.what = 4;
message.obj = reponseStr0.toString();
handler.sendMessage(message);

System.out.println("message 4 -->" + reponseStr0
+ " is already send to handler");
}
}.start();
} catch (Exception e) {
e.printStackTrace();
}
        Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 4: {
String temp = (String) msg.obj;
String ori =new String( "钢厂关联物资成功!");

System.out.println("temp-->" + temp);
System.out.println("ori-->" + ori);
if (temp.equals(ori)) {
System.out.println("temp 和 ori 相等!");
m_pDialog.setMessage("上传成功!");
// 需要关闭这个提示的时候:
m_pDialog.dismiss();
finish();
} else {
System.out.println("temp 和 ori 不相等!");
m_pDialog.setMessage("上传失败!");
// 需要关闭这个提示的时候:
m_pDialog.dismiss();
}
}
break;
default:
break;
}
super.handleMessage(msg);
}
};

然后就一直提示二者不相等,但其实打印出来二者是相等的,请问这是什么问题,烦请路过的各位大神指点一二,小弟感激不尽!
如下是日志打印内容:
08-15 08:36:22.548: I/System.out(5071): temp-->钢厂关联物资成功!
08-15 08:36:22.548: I/System.out(5071): ori-->钢厂关联物资成功!
08-15 08:36:22.548: I/System.out(5071): temp 和 ori 不相等!

BingBingBing~的主页 BingBingBing~ | 初学一级 | 园豆:172
提问于:2017-08-15 17:00
< >
分享
所有回答(4)
0

是说引用的对象值相当.但不是同一个吗?

吴瑞祥 | 园豆:28736 (高人七级) | 2017-08-15 17:20

b不是,一个是从服务器得到的回应,一个是客户端new的,现在是要判断它们的内容是否相等

支持(0) 反对(0) Ame0201 | 园豆:191 (初学一级) | 2017-09-07 09:12
0

你的Java版本是多少?记得Equals方法不同版本的Java实现好像是不同的,尤其是对String类。通常我们认为,判等逻辑,值类型比较的是值,引用类型比较的是地址,Equals方法是Object的方法,不同的类型可能覆写了Equals方法。

JeffWong | 园豆:2021 (老鸟四级) | 2017-08-15 18:15

w我用的是JDK 1.7

支持(0) 反对(0) Ame0201 | 园豆:191 (初学一级) | 2017-09-07 09:12
0

比如是否并发修改内容了?或者有肉眼不可见的不同,打印byte试一试

 System.out.println(Arrays.toString(temp.getBytes()));
System.out.println(Arrays.toString(ori.getBytes()));
TCG2008 | 园豆:1145 (小虾三级) | 2017-08-15 18:20

嗯,打印出来看了,是服务器那端回传的时候在字符串的尾部家了一个空格,所以导致二者不相等

支持(0) 反对(0) Ame0201 | 园豆:191 (初学一级) | 2017-09-07 09:13
0

两个String都trim一下试试。

流年飞雨 | 园豆:1928 (小虾三级) | 2017-08-16 23:25

d对,就是因为服务器端回应的时候在尾部加了一个空格

支持(0) 反对(0) Ame0201 | 园豆:191 (初学一级) | 2017-09-07 09:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册