2

所以我运行了这段代码

        String line = worldRead.readLine();

        String[] aLine = line.split("");

        for (int i = 0; i < aLine.length; i++){

            System.out.println(aLine[i]);

            if(aLine[i] == "0"){

                System.out.println("Its an 0");

            }

        }

它打印文件的第一行,因为它应该一个字符一个字符,但是 if 语句不起作用,我查看了调试器,它说当时的值为aLine[i]“0”。我不明白这种奇怪的行为。为什么是这样 ?

4

5 回答 5

3

利用 if(aLine[i].equals("0"))

==equals在比较值时检查对象

于 2013-06-02T18:45:14.140 回答
3
 if(aLine[i] == "0"){

     System.out.println("Its an 0");
 }

永远不要将字符串与==. 使用equals方法。

 if(aLine[i].equals("0"){
     System.out.println("Its an 0");
 }

为什么?

好吧,使用==操作符实际上会检查这两个对象是否是同一个对象。您正在测试的是这些对象中的值。

于 2013-06-02T18:45:33.770 回答
0

字符串比较的使用equals方法。

==不会比较字符串对象的字符串值,它只是检查引用是否相等。

在这方面,如果您比较两个具有相同值的字符串对象,它们不等于==运算符。

String line = worldRead.readLine();

        String[] aLine = line.split("");

        for (int i = 0; i < aLine.length; i++){

            System.out.println(aLine[i]);

            if(aLine[i].equals("0")){

                System.out.println("Its an 0");

            }

        }

它现在应该可以工作了。

于 2013-06-02T18:46:04.127 回答
0

正如其他人所说,Java 中的字符串比较应该使用.equals()而不是==. 后者仅检查对象身份,StringJava 中的两个对象可以具有相同的值而不是相同的对象。在这种情况下,由于您的字符串保证为一个字符长,您可以使用==. for您还可以使用增强循环稍微简化代码:

String line = worldRead.readLine();
for (String s : line.split("")){
    System.out.println(s);
    if (s.charAt(0) == '0') {  // or s.equals("0")
        System.out.println("Its an 0");
    }
}
于 2013-06-02T18:48:52.063 回答
0

正如 StinePike 上面所说,equals()使用==.

两个字符串对象不相同,但相等!

于 2013-06-02T18:48:55.843 回答