服务器端代码:
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 不相等!
是说引用的对象值相当.但不是同一个吗?
b不是,一个是从服务器得到的回应,一个是客户端new的,现在是要判断它们的内容是否相等
你的Java版本是多少?记得Equals方法不同版本的Java实现好像是不同的,尤其是对String类。通常我们认为,判等逻辑,值类型比较的是值,引用类型比较的是地址,Equals方法是Object的方法,不同的类型可能覆写了Equals方法。
w我用的是JDK 1.7
比如是否并发修改内容了?或者有肉眼不可见的不同,打印byte试一试
System.out.println(Arrays.toString(temp.getBytes())); System.out.println(Arrays.toString(ori.getBytes()));
嗯,打印出来看了,是服务器那端回传的时候在字符串的尾部家了一个空格,所以导致二者不相等