【问题标题】:Strange program flow奇怪的程序流程
【发布时间】:2011-05-03 21:28:15
【问题描述】:

下面这段代码我真的很困惑:

// 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 函数)。

【问题讨论】:

    标签: java android program-flow


    【解决方案1】:

    通过字符串比较,您可能希望使用equals 而不是==

    if (contentEncodingValue.equals("")) {
    ...
    }
    else if (contentEncodingValue.equals("gzip")) {
    ...
    }
    

    【讨论】:

      猜你喜欢
      • 2016-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-26
      • 2017-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多