即使它是

问题描述:

String.equals不返回true我有这个简单的代码小编,但我不知道为什么我不能让它工作。即使它是

tagName="Hello"; 
String value="Hello"; 
if (tagName!=null && tagName.equals(value)) 
{ 
    int io=0; 
} 

tagNamenull并明确等于value但代码嗟行int io=0;

+0

您确定您正在运行此代码吗?如果在if语句之前打印'tagName.equals(value)'的值,会发生什么? – 2014-11-22 20:09:25

+0

“if”块中没有输出。尝试添加一个'println'语句或者调试它 – Reimeus 2014-11-22 20:09:40

+0

是的代码正在运行,我在'io = 0'声明中设置了断点,并且我正在逐步调试它只是跳过if语句,就好像它已经返回false一样。 – Maven 2014-11-22 20:12:14

的Java可以优化你的赋值语句,因为它没有任何效果。您可以将System.out.println放入该块,或者您可以将'int io'移动到if之外,并且只需在该块内部进行分配。

+0

谢谢你,这是优化,我不得不在那里放置很多代码,但现在我只是用这个虚拟语句来检查,如果代码在这里运行良好,并且变得非常困惑,为什么它不会。现在,当我使得这个块没什么意义时,断点就很好。必须说,这个Java优化是令人惊讶和混乱。 – Maven 2014-11-22 20:22:36

+0

你说得对shekhar suman,你发布了一个非常详细的答复,并帮助了很多人,但我已经通过bmargulies建议的解决了这个问题,所以接受了这个投票。如果我可以接受两个答案,我肯定会这样做,我甚至可以对您的所有评论投票表示感谢。 – Maven 2014-11-22 20:29:31

+0

@shekharsuman你从侮辱OP('糟糕的设计')开始,这可能导致了一些不利的想法。但是当你删除它时,网络投票是0,所以我不确定什么是大惊小怪。 – bmargulies 2014-11-22 21:22:07