当前位置:编程学习 > wap >>

百思不得其解!奇怪的==和!=

本人开发中遇到一个百思不得其解的问题。
两个Activity:a,b.
在a里面使用Bundle放入要传入的数据,这里假设putString(“abc”,"def")。(putInt等其他数据也是同样的运行结果!?)然后启动b。
在b里面解开Bundle传入的数据。
然后奇怪的事情发生了。
Intent intent=this.getIntent();
Bundle b=intent.getExtras();
String s=b.getString("abc");//其他的数据类型我试过,运行结果一样!???
问题的爆发点:
if(s=="def"){        //if(b.getString("abc")=="def")运行结果一样  
   根本就不会执行!!!!
}

但是改成
if(s!="def")就会执行!!!!!!
这是为什么?
我明明放进去的数据是"def"(或者是putInt("abc",123)回来照样!=123才会执行!!!???)

最气人的就是我用界面的setText()来看看到底b.getString("abc")解出来的是什么。
结果明白无误的显示:"def"  引号是我在这里加的。显示的时候当然是def了。

大家有遇到的吗?

--------------------编程问答-------------------- 字符串相等不能用等号,用这个 "def".equals(s) --------------------编程问答-------------------- ls正解,字符串内容之间比较用equals()函数,==是比较两个字符串的地址 --------------------编程问答-------------------- 1楼正解,不多说 --------------------编程问答-------------------- LZ又2B了 --------------------编程问答-------------------- 这是java中一个对象池的概念问题 --------------------编程问答-------------------- 5楼我不知道, 其余的楼上都是正解 --------------------编程问答-------------------- 楼主哦  自我反省去吧!  字符串的比较必须 equals函数啊 怎么能用== 呢  --------------------编程问答--------------------
引用 1 楼 windspeaker 的回复:
字符串相等不能用等号,用这个 "def".equals(s)
--------------------编程问答-------------------- 多谢大家的回复。(那个缺家教的除外。)看来是我把java的String想的和C#,Delphi,C++STL,BASIC用法一样方便了。Java不是我的母语。所以这里让大家见笑了。
不过我在我的贴子里说了。我放进int,double也是一样的问题。
为了让问题简单一点这里只说int
int是原始类型。可是一样会有这个问题
Activity1里面:putInt("a",123);
Activity2里面:
if(b.getInt("a")==123){
   没有执行
}

反倒是
if(b.getInt("a")!=123){
    执行了!
}

int不应该有String那样的问题啊? --------------------编程问答-------------------- 那你就用Log.v把b.getInt("a")返回值打出来看看 --------------------编程问答-------------------- LZ似乎立马挽回面子。(包括反击某些人。)可惜经我测试,int没有String那样的问题!
程序:
Bundle b = myIntent.getExtras();
int n = b.getInt("key");
if(b.getInt("key") == 123){ 
    System.out.println("a --- " + n);    
}
else
    System.out.println("b --- " + n);
结果:
12-18 16:22:07.731: I/System.out(278): a --- 123 --------------------编程问答-------------------- 回复LS:
    我对Java就是一个因为Android而开始使用的门外汉。我还真没有想什么面子的问题。我确实是不明白而到这里来虚心求教的。但是某人实在是缺乏一个人最起码的教养。出口成脏实在是不应该。
    关于int我这里确实是有这个奇怪的现象。
    对了,一直忘了说了:我的模拟器设定的是版本1.6
    出问题也是在模拟器里。真机没有试过。
     --------------------编程问答--------------------
引用 9 楼 guanbingqian 的回复:
多谢大家的回复。(那个缺家教的除外。)看来是我把java的String想的和C#,Delphi,C++STL,BASIC用法一样方便了。Java不是我的母语。所以这里让大家见笑了。
不过我在我的贴子里说了。我放进int,double也是一样的问题。
为了让问题简单一点这里只说int
int是原始类型。可是一样会有这个问题
Activity1里面:putInt("a……


Activity1里面:putInt("a",123);
Activity2里面:
if(b.getInt("a")==123){
   没有执行
}
if(b.getInt("a")==123){ 请你把这一句的 双引号 去掉 谢谢

--------------------编程问答-------------------- 看错 看错 二了 --------------------编程问答--------------------
引用 12 楼 guanbingqian 的回复:
回复LS:
   ……



把你的代码贴完整点, --------------------编程问答-------------------- 建议先学调试,再学发帖!
此类问题,被骂也是正常的!要是放到stockflow,估计被骂得更惨 --------------------编程问答-------------------- 这些问题lz其实只要打个断点调试下,就都知道了,还有 做程序请耐心点
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,