Hi Amit,
   I checked it that str2 and str5 are not equal. That is the thing
confusing. If we are creating using new keyword it will return different
objects created on heap. But pointing to same String in string pool
(According to book kathy sierra). That is the main question if both
are pointing to same Java object in String pool then why we need this object
in the heap. Is it due to OOP concept ??



On 6/28/10, Amit Ahire <[email protected]> wrote:
>
> Hello Shiv,
>
>
> First of all I would like to remind you of this particular thing about
> String class : " A String class is the special and only class where the
> object is instantiated without having to use the 'new' keyword."
>
>
> So if you are creating the instance
>
>
> String str2 = new String("shiv");
> or
> String str2= "shiv";
>
>
> Now coming back to what you are asking about, i dont understand why do you
> say this,
>
>
>
>> If I created object
>
>    String obj5 = new String("shiv");
>
>  Here (obj2==obj5) will return false and (obj5==obj1) will return false.
>
>
>
> (obj2==obj5) and (obj5==obj1) will return true, wont it??
>
>
>
>
> With regards,
>
>
> Amit
>
>
>
>
>
>
>  On Sun, Jun 27, 2010 at 11:01 PM, Shiv Shankar <[email protected]
> > wrote:
>
>> Hi Guys,
>>    Again I am here with new question. Have a discussion with my friends
>> and little bit confused about the string pool.
>>
>> If I am creating a String object using
>>   String obj1="shiv";
>> and
>>    String obj2 = new String("shiv");
>> We know "shiv" will go in string pool. And when multiple objects created
>> like
>>    String obj3 = "shiv";
>>    String obj4 = "shiv";
>> then (obj3==obj4)  and (obj1==obj4) will return true because they are
>> pointing to same object.
>>
>> Now
>>  If I created object
>>    String obj5 = new String("shiv");
>>  Here (obj2==obj5) will return false and (obj5==obj1) will return false.
>>
>> It means both object obj2 and obj5 are different. But what about string
>> literal "shiv". Where it will reside in this case. Will it like
>>
>> obj2 and obj5 are two different objects in Heap but internally they are
>> pointing to same object "shiv" on string pool.
>> Or
>> its like cloning of object with "shiv" string. And having two totally
>> different objects in Heap memory.
>>
>> What about
>>  String x = "shiv";
>>  String y = new String(x);
>>  String z = new String (y);
>> Here I think if I called a method on z object it will call same method
>> from y and then method of y will call same method of x and then finally x
>> will call method of String pool "shiv" object.
>>
>> Correct me where I am wrong.
>>
>> Thanks
>> Shiv Shankar
>>
>>
>> --
>> To post to this group, send email to
>> [email protected]
>> To unsubscribe from this group, send email to
>> [email protected]<javaprogrammingwithpassion%[email protected]>
>> For more options, visit this group at
>> http://groups.google.com/group/javaprogrammingwithpassion?hl=en
>
>
>
>



-- 
With Regards,

Shiv Shankar,
Persistent System Ltd.
http://sites.google.com/site/mcashivshankar/

-- 
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/javaprogrammingwithpassion?hl=en

Reply via email to