有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (3) 个答案

  1. # 1 楼答案

    System.out是一个^{},所以它有几种方法,比如:

    • ^{}用于对象int[]。每次你用对象调用它时,它都会被使用,如果toString()没有重载,它会打印它的“地址”
    • ^{}用于char[]

    因为不能为Java中的每种对象重载方法,所以只能选择这一种

  2. # 2 楼答案

    很可能是因为它是围绕着向字符流写入而设计的

    System.out是一个PrintStream,它将写操作委托给一个BufferedWriter,后者又是Writer的实例

    一些可能性

    void    write(char[] cbuf)
    abstract void   write(char[] cbuf, int off, int len) 
    void    write(int c)
    void    write(String str) 
    void    write(String str, int off, int len)
    

    正因为如此,PrintStream中的每个void print(..)方法都使用String.valueOf()将其传递给writer并说writer.write(s)

    人们注意到了这一点,并建议在数组中实现toString https://bugs.openjdk.java.net/browse/JDK-4168079,但显然为时已晚,因为兼容性/稳定性问题。因此,我们决定实施helper方法来完成同样的事情

    所以现在你可能会发现很多 System.out.println(Arrays.toString(new int[]{1,2,3}))

  3. # 3 楼答案

    似乎设计师决定这样做是因为在他们看来,这将是打印包含char的数组的最常用方式。请注意,如果您想打印数组的内容,而不是在内存中打印其地址,可以使用Arrays类中提供的方法toString()。当数组包含除char以外的其他类型的对象时,它允许您以方便的方式打印数组的内容。你这样称呼它:

    Arrays.toString(yourArray);

    打印数组内容的另一种方法是在数组元素上创建循环:

    for (YourClass object : yourArray) {
        System.out.println(object);
    }