aspose file tools*
The moose likes Beginning Java and the fly likes In this code why a new String object is created, than not using println(copyTo)? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Soft Skills this week in the Jobs Discussion forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "In this code why a new String object is created, than not using println(copyTo)?" Watch "In this code why a new String object is created, than not using println(copyTo)?" New topic
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: 167


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: 167
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: 40034
    
  28
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: 40034
    
  28
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: 24187
    
  34

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: 40034
    
  28
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.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: In this code why a new String object is created, than not using println(copyTo)?