我很确定我错过了一些非常明显的东西,但这看起来很奇怪。Java方法 - RETURN实际上意味着什么?
我使用Eclipse开发Android - 和我有类似的方法,而我是调试和它做一些非常奇怪...
public boolean test() {
if (variable == value)
return true;
// more code appears here
return false;
}
通过步进,在第一行( if语句),调试器建议变量的值确实相等(它们的字节变量值都为0) - 然后调试器移动到第2行(返回值为true),但它会移至最后一行(返回false) - 跳过一切inbetween!?
返回的值为'false'
WTF正在那里?我假设RETURN将完全退出该方法 - 但调试器(以及返回的值被返回 - 为false)表明它没有这种做法!?
我在想什么,这是盯着我的脸?返回语句是最后一行方法总是执行还是什么?
p.s.有趣的更新...
我使用的变量被分配在代码中,我没有写 - 我只是挖出来的源代码,并重新构建/重新运行调试器访问该源和我发现这条线
byte variable = (byte)9;
你能看到任何错误的,并且这也许可以解释你认为的问题!?我已经通过电子邮件发送笔者但同时 - 嗯....
UPDATE2
OK,我已经完全重拍的项目,清理和重建它,卸载和重新安装它插入手机和调试器现在的行为更明智的...
问题显然是使用'9'(它们使用0-9作为可能的值在一个字节!!) - 现在发生的事情是,尽管调试器建议“变量”是“ 0“ - 它与(字节)0的比较失败,因此我得到一个'假'返回 - 这实际上是正确的。我很明显坚持,直到他们改变他们的代码使用一个简短的 - 作为接受一个答案,这是非常棘手的'重建一切'的答案和比较使用(字节)或bytevalue()'的答案是排序 - 都是对的!?
它不应该这样做,不。如果你清理项目,你还会观察这种行为吗? – Craigy
您发布的代码与您在程序中的代码不同。尝试复制粘贴。 –
有趣的你应该提及清洁 - 我敢肯定,我看到了这样的事情之前,一个完整的清洁和重建固定它 - 但 - 在这种情况下,它似乎像这样卡住... – shrewdlogarithm