[Logo]
Forums Register Login
In this code why a new String object is created, than not using println(copyTo)?


In this code why a new String object is created, than not using println(copyTo)?.What is the difference?

Varuna
Hello!

println() method which is a memebr of PrintStream class can take both char array as well as String object as a parameter. So whether you use char array (in this case copyTo) or String object the output is same. The only difference is the type of parameter passed to the println method.

Gautam.
Gautam!

What was in my mind was what made anybody without straightly using copyTo in the println(), create a String object.This was from the Sun java Tutorials.


Varuna
The real problem is that arrays don't have overridden toString() methods. Have a look at the Object class, Java Language Specification about arrays, and the )]String class constructor.

Now work out what that Java Tutorial method would print if you didn't create the new String! Try it with
System.out.println(new String(copyTo));
and
System.out.println(copyTo);
The idea of that example is to show you how the arraycopy method works, so they miss out the bit about new String!
If one of my links doesn't work, copy and paste this:

http://java.sun.com/javase/6/docs/api/java/lang/String.html#String(char[])
Actually, it would print the same thing. There's an overloaded version of println() that accepts a char[] argument and prints the characters as if they were a String.

The reason the code makes a copy of some -- not all! -- of the characters is because it is demonstrating how the System.arraycopy() method is used.

The reason that the programmer creates the new String is harder to imagine. The overloaded println(char[]) has been present since the very first JDK release. Perhaps the coder was simply new to Java? Nobody's perfect, even Sun Micro employees.
Yes, I see what you mean; I had expected to get the [C@ab123456 format! It is a bit pointless creating a new String object.
Wink, wink, nudge, nudge, say no more ... https://richsoil.com/cards



All times above are in ranch (not your local) time.
The current ranch time is
Nov 23, 2017 11:53:25.