我对下面的代码感到非常困惑:
// Get the content text
String contentText = null;
Header contentEncodingHeader = m_httpEntity.getContentEncoding();
final String contentEncodingValue = contentEncodingHeader != null ? contentEncodingHeader.getValue() : ""; // In my example, this is set to "gzip"
if (contentEncodingValue == "")
{
contentText = this.GetResponseContentText(inputStream, charset);
}
else if (contentEncodingValue == "gzip")
{
contentText = this.GetResponseContentText_GZip(inputStream, charset);
}
return contentText;
当我跳过代码行时,它按以下顺序执行:
1) if (contentEncodingValue == "")
{
3) contentText = this.GetResponseContentText(inputStream, charset);
}
2) else if (contentEncodingValue == "gzip")
{
contentText = this.GetResponseContentText_GZip(inputStream, charset);
}
4) return contentText;
更奇怪的是,它甚至没有进入 GetResponseContentText
函数。我真的很困惑。有人能解释一下吗?
此外,如果我注释掉 if 语句,它就可以正常工作(进入 GetResponseContentText_GZip
函数)。
最佳答案
在字符串比较中,您需要使用 equals
而不是 ==
if (contentEncodingValue.equals("")) {
...
}
else if (contentEncodingValue.equals("gzip")) {
...
}
关于java - 奇怪的程序流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5875920/