File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
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
JavaRanch » Java Forums » Java » Java in General
Bookmark "About String" Watch "About String" New topic

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

Joined: Jul 08, 2003
Posts: 24199

Originally posted by jefff willis:

This however:

String str = new str("prasad");


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
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...

NOT same

Here's the program ...

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

George Franciscus<br /><br /><a href="" target="_blank" rel="nofollow"></a><br /><a href="" target="_blank" rel="nofollow"></a>
I agree. Here's the link:
subject: About String
It's not a secret anymore!