【问题标题】:Why toCharArray() and toString() method doesn't work [closed]为什么 toCharArray() 和 toString() 方法不起作用[关闭]
【发布时间】:2021-01-26 00:41:33
【问题描述】:

Java 中的 toCharArray() 返回字符数组,Arrays.toString() 将数组转换为字符串,toString() 会一样,但为什么下面的代码不起作用。

public static void main(String[] args) {

    ArrayList<String> ar = new ArrayList<>(Arrays.asList( "abc", "def", "ghi", "jkl"));

    char[] t = "abc".toCharArray();
    String t2 = Arrays.toString(t);

    if( ar.contains(t2)){
        System.out.println("contains"); // This line doesn't get executed
    }

    String t3 = t.toString();
    if( ar.contains(t3)){
        System.out.println("contains"); // This line doesn't get executed
    }

    if( ar.contains("abc")){
        System.out.println("contains"); // This line execute and prints on console
    }
}

【问题讨论】:

标签: java arrays


【解决方案1】:

toString() 在 char 数组上调用不会做同样的事情。

当你写作时

String t3 = t.toString();

你说你想从Object.class调用toString()方法。 因为 char 数组不能有 toString() 的覆盖版本,它会做你所期望的,因为它是一个原始类型的数组。 它按预期工作,它返回指向堆中特定字符数组的链接的字符串表示形式。

Arrays.toString(t) 返回初始数组的字符串表示形式。 在您的情况下,它将返回 "[a, b, c]"。 然后,当您尝试调用 ar.contains(t2) 时,您会尝试在没有它的初始数组中找到 "[a, b, c]" 字符串。里面有4根弦。 "abc""def""ghi""jkl"。 它不包含请求的元素 ("[a, b, c]" string)。

我建议您调试您的程序。您将看到哪些值实际上在您的变量中。它会让你对这种情况有更多的了解。

【讨论】:

    【解决方案2】:

    Arrays.toString 返回不等于abc[a,b,c]。请参阅上面的答案,为什么另一个不起作用。

    【讨论】:

    • 我想,你的意思是说。"toString()" 和 "Arrays.toString()" 也一样。
    • @AarravAgarwal ""toString()" 和 "Arrays.toString()" 也一样" 为什么?这显然不是真的,甚至你问题中的例子也反驳了它。你真的检查过这些方法的结果吗?
    【解决方案3】:

    您假设t.toString() 将返回一个由数组t 中的所有字符组成的字符串。事实并非如此,语言也不需要如此。

    你想要的是String t3 = new String(t)

    【讨论】:

      【解决方案4】:

      代码完全按预期工作。理想的方法是

      String t2 = String.valueOf(t);
      if(ar.contains(t2)){
          System.out.println("contains"); // This line execute and prints on console
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-14
        • 2020-10-25
        相关资源
        最近更新 更多