如何在if测试中正确使用java子字符串?

dww*_*n66 0 java if-statement substring

我正在使用Java逐行读取文件并解析每行中的数据以获取报告.会定期将一个URL写入一行,我想绕过该行.我需要设置一个if...then测试URL的存在 - 在这种特定情况下,我将其定义为行读取的前四个字节http.如果条件为真,则读取文件中的下一行,但如果条件为false,则将当前行发送到解析器以进行报告输出.

简单,不是吗?我遇到的问题是我无法得到我的if..then陈述以准确识别一个true条件.我唯一的线索是,当我inputString等于测试值时,它会传递为true.除此之外......我无法发现任何与众不同的东西.

public class testClass
{
    public static void main(String args[])
    {
        String inputString1 = "http://www.google.com/r";
        String inputString2 = "google";
        String inputString3 = "google search";
        String inputString4 = "http";
        parseInput(inputString1);
        parseInput(inputString2);
        parseInput(inputString3);
        parseInput(inputString4);
    }
    //
    private static void parseInput(String inputString8) {
        int httpFlag;
        if (inputString8.substring(0,4) == "http") 
            { httpFlag = 1467; } else
            { httpFlag = 10644; }
        System.out.println(inputString8+" "+inputString8.toLowerCase().substring(0,4)+" "+httpFlag); 
     } 
}
Run Code Online (Sandbox Code Playgroud)

这是我的输出:

http://www.google.com/r http 10644
google goog 10644
google search goog 10644
http http 1467
Run Code Online (Sandbox Code Playgroud)

我期待1467inputString1inputString4.控制台似乎正确显示我的输入和子字符串,Java文档中没有任何内容表明我的子字符串将是一个char数组或除了字符串之外的任何东西,所以我无法弄清楚为什么http作为4字节的前四个字节string与(4 + x)字节字符串的前四个字节"不同".我错过了什么?

T.J*_*der 5

比较字符串equals,而不是==.你所比较的字符串是调用的结果,没有什么特别之处substring.