| Author |
In this code why a new String object is created, than not using println(copyTo)?
|
Varuna Seneviratna
Ranch Hand
Joined: Jan 15, 2007
Posts: 164
|
|
In this code why a new String object is created, than not using println(copyTo)?.What is the difference? Varuna
|
Varuna Seneviratna
|
 |
Gautam Sathe
Greenhorn
Joined: Jun 13, 2007
Posts: 6
|
|
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.
|
 |
Varuna Seneviratna
Ranch Hand
Joined: Jan 15, 2007
Posts: 164
|
|
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
|
 |
Campbell Ritchie
Sheriff
Joined: Oct 13, 2005
Posts: 32833
|
|
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!
|
 |
Campbell Ritchie
Sheriff
Joined: Oct 13, 2005
Posts: 32833
|
|
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[])
|
 |
Ernest Friedman-Hill
author and iconoclast
Marshal
Joined: Jul 08, 2003
Posts: 24081
|
|
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.
|
[Jess in Action][AskingGoodQuestions]
|
 |
Campbell Ritchie
Sheriff
Joined: Oct 13, 2005
Posts: 32833
|
|
|
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.
|
 |
 |
|
|
subject: In this code why a new String object is created, than not using println(copyTo)?
|
|
|