即使它是
String.equals不返回true我有这个简单的代码小编,但我不知道为什么我不能让它工作。即使它是
tagName="Hello";
String value="Hello";
if (tagName!=null && tagName.equals(value))
{
int io=0;
}
tagName
不null
并明确等于value
但代码嗟行int io=0;
的Java可以优化你的赋值语句,因为它没有任何效果。您可以将System.out.println放入该块,或者您可以将'int io'移动到if之外,并且只需在该块内部进行分配。
谢谢你,这是优化,我不得不在那里放置很多代码,但现在我只是用这个虚拟语句来检查,如果代码在这里运行良好,并且变得非常困惑,为什么它不会。现在,当我使得这个块没什么意义时,断点就很好。必须说,这个Java优化是令人惊讶和混乱。 – Maven 2014-11-22 20:22:36
你说得对shekhar suman,你发布了一个非常详细的答复,并帮助了很多人,但我已经通过bmargulies建议的解决了这个问题,所以接受了这个投票。如果我可以接受两个答案,我肯定会这样做,我甚至可以对您的所有评论投票表示感谢。 – Maven 2014-11-22 20:29:31
@shekharsuman你从侮辱OP('糟糕的设计')开始,这可能导致了一些不利的想法。但是当你删除它时,网络投票是0,所以我不确定什么是大惊小怪。 – bmargulies 2014-11-22 21:22:07
您确定您正在运行此代码吗?如果在if语句之前打印'tagName.equals(value)'的值,会发生什么? – 2014-11-22 20:09:25
“if”块中没有输出。尝试添加一个'println'语句或者调试它 – Reimeus 2014-11-22 20:09:40
是的代码正在运行,我在'io = 0'声明中设置了断点,并且我正在逐步调试它只是跳过if语句,就好像它已经返回false一样。 – Maven 2014-11-22 20:12:14