This week's giveaway is in the EJB and other Java EE Technologies forum.
We're giving away four copies of EJB 3 in Action and have Debu Panda, Reza Rahman, Ryan Cuprak, and Michael Remijan on-line!
See this thread for details.
The moose likes Java in General and the fly likes About String Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of EJB 3 in Action this week in the EJB and other Java EE Technologies forum!
JavaRanch » Java Forums » Java » Java in General
Bookmark "About String" Watch "About String" New topic
Author

About String

vara prasad
Ranch Hand

Joined: Dec 21, 2004
Posts: 47
what is the difference between these two statements

String str="prasad";
String str = new str("prasad");
jefff willis
Ranch Hand

Joined: Sep 29, 2004
Posts: 113
The String class represents character strings. All string literals in Java programs, such as "prasad", are implemented as instances of this class.

Strings are constant; their values cannot be changed after they are created. String buffers support mutable strings. Because String objects are immutable they can be shared. For example:

String str = "prasad";

This creats a string literal, sets it's contents to "prasad" and pases the reference to that literal back to your variable [str].

This however:

String str = new str("prasad");

creates a string literal and sets contents to "prasad" (just like above). But a new string is created and the reference to that literal is passed to it. THEN that new string's referenc is passed to your variable [str].

Since TWO string literals are created in the second example, use the first one in your programs.
Ernest Friedman-Hill
author and iconoclast
Marshal

Joined: Jul 08, 2003
Posts: 24166
    
  30

Originally posted by jefff willis:

This however:

String str = new str("prasad");

creates...


Actually, of course, this line doesn't even compile. It would be

String str = new String("prasad");

But I think everybody here knows that and this was just a typo.


[Jess in Action][AskingGoodQuestions]
George Franciscus
author
Ranch Hand

Joined: Jan 25, 2005
Posts: 32
The explaination lies in understanding the difference between the comparison of an object reference and an object value. This little program explains it in code. Java will set name1 and name2 to the same object reference. Therefore, the first "if" statement evaluates to true, because the "==" is testing that the *references* are the same. However, name3 creates a brand new object with its own object reference. Therefore, the second "if" statement fails because the *references* are different. The third "if" statement evaluates to true because that statement is checking the contents of the String variables, not the references.

The output is as follows...

same
NOT same
equals

Here's the program ...



[added code tags - Ilja]
[ January 29, 2005: Message edited by: Ilja Preuss ]

George Franciscus<br />george.franciscus@nexcel.ca<br /><a href="http://www.nexcel.ca" target="_blank" rel="nofollow">http://www.nexcel.ca</a><br /><a href="http://www.manning.com/franciscus" target="_blank" rel="nofollow">http://www.manning.com/franciscus</a>
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: About String
 
Similar Threads
setAttribute & getAttibute doubt
string comparasion
how many type or how many kind of way we can create an object in java??
question regarding strings
String Question