处理loadStrings字符串总是不同的,即使看似相等

时间:2016-03-27 16:40:14

标签: arrays string processing

在处理中我一直在尝试从包含不同字符串的文本文件中读取。当使用saveStrings函数读取并进行比较时,它们总是不同的,即使get文件中的行似乎相等。我最近尝试使用saveStrings写入文本文件,但这也不起作用。

    String lines[] = loadStrings("list.txt");
    String list[] = {"1", "1"};

    void test() {
      saveStrings("data/list.txt", list);
      println(lines[0] == lines[1]); //returns false
      println("1" == "1");           //returns true
    }

我只是在设置功能中调用该方法。

1 个答案:

答案 0 :(得分:2)

请勿使用==来比较String值。请改用equals()功能:

 println(lines[0].equals(lines[1]));

您需要执行此操作,因为==会比较两个String值是否为同一个对象。 文字 "1"等于自身,因此评估为true。但是,您从文件中读取的两个String值不是同一个对象,因此==的计算结果为false

equals()函数实际检查String值内的字符,如果它们都包含相同的字符,则返回true

the Processing reference

也涵盖了这一点
  

要比较两个字符串的内容,请使用equals()方法,如if(a.equals(b)),而不是if(a == b)。 String是一个Object,因此将它们与==运算符进行比较只会比较两个字符串是否存储在同一个内存位置。使用equals()方法将确保比较实际内容。 (troubleshooting reference有更长的解释。)