This week's giveaway is in the Android forum.
We're giving away four copies of Android Security Essentials Live Lessons and have Godfrey Nolan on-line!
See this thread for details.
The moose likes Beginning Java and the fly likes String objects Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "String objects" Watch "String objects" New topic
Author

String objects

pradeepta chopra
Ranch Hand

Joined: Jul 05, 2008
Posts: 137
it is said that if we declare a atring object like
String ab="abc";
then the jvm will first check the String constant pool for the existence of some object with value "abc",if it exists it will assign it to ab else a new object is created.
but when we use new keyword to make a new object like
String ab=new String("abc");
then memory from non-String pool is assigned to the object and a new object is created.
QUESTION:
what if we use the new keyword but the constant pool already contains a literal entry of "abc".
then will the jvm create a new object without checking the pool or not.
and to which object will the ref variable ab refer to??
Gamini Sirisena
Ranch Hand

Joined: Aug 05, 2008
Posts: 347
As far as I know if you use the new keyword a new object will be created outside of the string pool and no checking of the string pool is peformed.

It's better if you can a write small program to verify this anyway.
pradeepta chopra
Ranch Hand

Joined: Jul 05, 2008
Posts: 137
how do i verify that to which object is it refering to??
and is it from the string pool or not
Vijitha Kumara
Bartender

Joined: Mar 24, 2008
Posts: 3817

Use "==" to check whether two String objects refer to the same memory location or not. That's the best way you can check this according to my knowledge.



will result



Try it with different ways you want.


SCJP 5 | SCWCD 5
[How to ask questions] [Twitter]
pradeepta chopra
Ranch Hand

Joined: Jul 05, 2008
Posts: 137
ohk, thanks Vijitha Kumara
Jesper de Jong
Java Cowboy
Saloon Keeper

Joined: Aug 16, 2005
Posts: 14074
    
  16

When you create a String object with the "new" keyword, you will always get a new String object that is not in the pool, no matter if there's already a string in the pool with the same contents or not.

You can call intern() on a String object. That method returns a reference to a String object in the following way: If there's a string in the pool with the same content, then it returns the existing string in the pool; if it's not in the pool, then a new string is created in the pool and a reference to that new pooled string is returned. See the API documentation for more information.


Java Beginners FAQ - JavaRanch SCJP FAQ - The Java Tutorial - Java SE 7 API documentation
Scala Notes - My blog about Scala
 
 
subject: String objects
 
Similar Threads
what is difference between Creating String object using new and Direct assignment ??
String constant pools and Strings on heap
Confusion on the topic of String constant table ?
String literal Pool doubt
Confused with String creation.