Java Mailing List Archive

http://www.junlu.com/

Home » Home (12/2007) » J2EE Interest »

Re: new String

Muzaffer G�RSOY

2005-10-17

Replies:

when you write
  String s5 = "a" + "String";
s5 will reference to a String object containing "aString",
so, we say that s5
  String s5 = "a" + "String"
is semantically the same as
  String s5 = "aString"  with regard the compiler....

literals are evaluated at compile time if possible :)

try this

 int three = 3;
 int twoPlusOne = 2 + 1;

and decompile the class... you will see

 int twoPlusOne = 3 in the decompiled code.


So,
when java code is compiled
there is no dublicate entry for literals !


>From: Mike New <mike@(protected)>
>Reply-To: "A mailing list for Java(tm) 2 Platform, Enterprise Edition"
><J2EE-INTEREST@(protected)>
>To: J2EE-INTEREST@(protected)
>Subject: Re: new String
>Date: Mon, 17 Oct 2005 09:02:17 -0400
>
> > this may help;
> >
> > String s1="aString";
> > String s2="aString";
> > String s3=new String("aString");
> > String s4=new String("aString");
> >
> > s1==s2 // TRUE
> > s1==s3 // FALSE
> > s1==s4 // FALSE
> >
> > s3==s4 // FALSE   <--- here
> >
> > Frans is absolutely right ;)
>
>I note that if
>
>  String s5 = "a" + "String";
>
>then
>  s5 == s1 // TRUE.
>
>So we see Strings are being shared even when "created" via other
>operations, but NOT when created via "new String(String s)".
>
>Since they're immutable, there's no benefit to having multiple identical
>Strings in memory. Smalltalk does this with numbers too, I believe!
>
>Mike New
>
> >
> >
> >
> >>From: Mark Galbreath <mgalbreath@(protected)>
> >>Reply-To: mgalbreath@(protected)
> >>To: J2EE-INTEREST@(protected)
> >>Subject: Re: new String
> >>Date: Mon, 17 Oct 2005 08:14:08 -0400
> >>
> >>This is not true. Since strings are immutable, a new string instances
> >> will
> >>be created no matter what method is used. The two are equivalent.
> >>
> >>Cheers,
> >>Mark
> >>
> >>
> >>Frans Verhoef wrote:
> >>
> >>>Hi,
> >>>String s1 = "test" is definitely preferred, as the other version
>creates
> >>>two objects containing "test". Also, when you assign many times "test"
> >>> to
> >>>a string object, than only one string is created in memory, while if
>you
> >>>use new String("test"), a new string is created every single time.
> >>>
> >>>For example:
> >>>
> >>>String[] s = new String[1000000];
> >>>for (int i=0; i<1000000; i++) s[i] ="test"; // uses hardly any memory
> >>>
> >>>for (int i=0; i<1000000; i++) s[i] = new String("test"); // uses lots
>of
> >>>memory, as each time a new string is created
> >>>
> >>>Cheers,
> >>>Frans
> >>>
> >>>On Sun, 16 Oct 2005 16:00:49 +0530, KR Kumar wrote:
> >>>
> >>>
> >>>>Hi,
> >>>>
> >>>>Plz let me know which one is better in terms of performace between
> >>>>the two of the following approaches for string initialization
> >>>>
> >>>>String s1 = new String(?test?)
> >>>>
> >>>>Or
> >>>>
> >>>>String s1 = ?test?
> >>>>
> >>>>Kumar
> >>>>======================================================================
> >>>>===== To unsubscribe, send email to listserv@(protected)
> >>>>include in the body of the message "signoff J2EE-INTEREST". For
> >>>>general help, send email to listserv@(protected)
> >>>>the body of the message "help".
> >>>>
> >>>>
> >>>
> >>>===========================================================================
> >>>To unsubscribe, send email to listserv@(protected)
> >>>body
> >>>of the message "signoff J2EE-INTEREST". For general help, send email
>to
> >>>listserv@(protected)".
> >>>
> >>>
> >>>
> >>>
> >>
> >>===========================================================================
> >>To unsubscribe, send email to listserv@(protected)
> >> body
> >>of the message "signoff J2EE-INTEREST". For general help, send email to
> >>listserv@(protected)".
> >
> >
>===========================================================================
> > To unsubscribe, send email to listserv@(protected)
> > body
> > of the message "signoff J2EE-INTEREST". For general help, send email to
> > listserv@(protected)".
> >
>
>
>------------------- _/ /// // --------------------
>
>===========================================================================
>To unsubscribe, send email to listserv@(protected)
>of the message "signoff J2EE-INTEREST". For general help, send email to
>listserv@(protected)".

===========================================================================
To unsubscribe, send email to listserv@(protected)
of the message "signoff J2EE-INTEREST". For general help, send email to
listserv@(protected)".
©2008 junlu.com - Jax Systems, LLC, U.S.A.