Most likely because it was created around for writing to character streams .
System.outis PrintStreamwhich delegates the entry to BufferedWriter, which, in turn, is an instance Writer.
some Writerfeatures
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)
Because of this, in most cases, each void print(..)method in PrintStreamuses String.valueOf()to pass it on Writerand saywriter.write(s)
toString
https://bugs.openjdk.java.net/browse/JDK-4168079, , , , - /. , , .
,
System.out.println(Arrays.toString(new int[]{1,2,3}))