Java: If条件满足,代码却不执行,请高手指点!

beiyanglove 2008-03-25 06:50:42
if(objForm.getModeBf() == "1"){
objForm.setMode("1");
} else if(objForm.getModeBf() == "2" || objForm.getModeBf() == "4"){
objForm.setMode("3");
}

上面是代码,现在objForm.getModeBf()的值明明等于1
但是下面的 objForm.setMode("1"); 却不执行。
好奇怪。
具体可以参照附件,请高手指点!
...全文
1267 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
molysword 2008-03-27
  • 打赏
  • 举报
回复
"1".equals(objForm.getModeBf()), 下面的作同样的修改
tuliqiang 2008-03-27
  • 打赏
  • 举报
回复
建议搂主 看下 String 的API 文档 看下String 的equals 方法为什么能比较对象的内容 其它的类的对象是不能这样比较的~ 因为String 的equals 方法实现了哈西cd 散列码的处理~ 在object 的 equals 方法 只能 是同一个对象 才能返回true。
tuliqiang 2008-03-27
  • 打赏
  • 举报
回复
objForm.getModeBf() == "1" 比较的是objForm.getModeBf()返回的对象是否和在堆内存对象“1”是同一个.
(objForm.getModeBf()).equals("1"),才是比较2个对象的内容.
lee1204 2008-03-27
  • 打赏
  • 举报
回复
确实用==的几率比较小
oogamiyiqilou 2008-03-27
  • 打赏
  • 举报
回复
要用"1".equals(objForm.getModeBf())这种形式
yangzi315 2008-03-26
  • 打赏
  • 举报
回复
objForm.getModeBf() == "1" 比较的是objForm.getModeBf()返回的对象是否为1.
(objForm.getModeBf()).equals("1"),才是比较2个对象的值.
rongdajian 2008-03-26
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 ee4456 的回复:]
"1".equals(objForm.getModeBf())


这样写好一点,String对象的equals比较的是直,而==不是,你那个条件是不成立,因为引用地址不一样。。所以自然不一样。。。
[/Quote]
ee4456 2008-03-26
  • 打赏
  • 举报
回复
"1".equals(objForm.getModeBf())


这样写好一点,String对象的equals比较的是直,而==不是,你那个条件是不成立,因为引用地址不一样。。所以自然不一样。。。
beiyanglove 2008-03-26
  • 打赏
  • 举报
回复
非常感谢楼上指点,明白了!
kokobox 2008-03-26
  • 打赏
  • 举报
回复
如果objForm.getModeBf()返回null的话

那么 null.equals("XXXX")的话会抛出空指针异常

在比较之前你并没有判断objForm.getModeBf()返回的是不是null,因为null是没有equals方法的

保险起见 用 "1".equals("XXX")

"1"是String类型的,任何""都是string类型的,只要是String类型就有equals方法

程序就不会出错。

也是编程的习惯问题

beiyanglove 2008-03-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kokobox 的回复:]
为了以防objForm.getModeBf()返回null 最好用"1".equals(objForm.getModeBf())
[/Quote]

请教3楼:这样做和1楼-->(objForm.getModeBf().equals("1")){
有什么区别吗?结果不都一样吗?
请指教!!
sailyyang 2008-03-26
  • 打赏
  • 举报
回复
3楼 正解。。

可以提交点代码效率
beiyanglove 2008-03-26
  • 打赏
  • 举报
回复
非常感谢各位老大的指点!
总算大概搞明白了。

不知道是Java整的太过复杂,还是我太笨,哈哈!
junny9985 2008-03-26
  • 打赏
  • 举报
回复
在java里 ==和equals 是不同的

具体的差别在于:

==是用来比较两个字符串的内容相同,并且-并且!这两个字符串的内存地址也是一样的。

而equals只是用来分析他们的内容是不是相同。

楼主问题就出现在这里 把==换成equals就ok了
ranyanhui 2008-03-26
  • 打赏
  • 举报
回复
楼主从c#过来的吧,
C#也支持String.equals(),
java却不支持==哦
syhan 2008-03-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 java2000_net 的回复:]
这个 == 和 equals 弄倒了多少 java人啊!

我真怀疑,为什么这样做,那个 == 真的有用途吗?
为何不把eauals 转义成 == 呢?


我记得有一个语法是 ===, 忘了是哪个语言了。 我还是喜欢这样的。equals 太讨厌了!
[/Quote]

好象javascript是
  • 打赏
  • 举报
回复
楼主也搞晕了,呵呵
这样才可以 if(objForm.getModeBf().equals("1")
String 是对象,直接==号判断不出来其值的.

是啊,java应该将==默认处理一下下
老紫竹 2008-03-26
  • 打赏
  • 举报
回复
这个 == 和 equals 弄倒了多少 java人啊!

我真怀疑,为什么这样做,那个 == 真的有用途吗?
为何不把eauals 转义成 == 呢?


我记得有一个语法是 ===, 忘了是哪个语言了。 我还是喜欢这样的。equals 太讨厌了!
knight14 2008-03-26
  • 打赏
  • 举报
回复
===,绝对等于,在javascript里见到过。
dracularking 2008-03-25
  • 打赏
  • 举报
回复
对引用类型而言 ==比较的是引用值
加载更多回复(6)

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧