Just when I thought the answer was simple, now it seems more complex. Are you saying that new would always create a new object but the GC might merge multiple instances of String into a single instance?
Also, if new String() always creates a new instance, then it seems that this statement (from String.java) is not quite right: Because String objects are immutable they can be shared. For example: String str = "abc"; is equivalent to: char data[] = {'a', 'b', 'c'}; String str = new String(data); > On Dec 23, 2021, at 2:55 PM, Simon Roberts <si...@dancingcloudservices.com> > wrote: > > I think there are two things at stake here, one is that as I understand it, > "new means new", in every case. This is at least partly why the > constructors on soon-to-be value objects are deprecated; they become > meaningless. The other is that if the presumption is that we should > always intern new Strings, I must disagree. Pooling takes time and memory > to manage, and if there are very few duplicates, it's a waste of both. I > believe it should be up to the programmer to decide if this is appropriate > in their situation. Of course, the GC system seems to be capable of > stepping in in some incarnations, which adds something of a counterexample, > but that is, if I recall, configurable. > > > On Thu, Dec 23, 2021 at 2:53 PM Xeno Amess <xenoam...@gmail.com> wrote: > >> never should,as Object can be use as lock. >> >> XenoAmess >> ________________________________ >> From: core-libs-dev <core-libs-dev-r...@openjdk.java.net> on behalf of >> Bernd Eckenfels <e...@zusammenkunft.net> >> Sent: Friday, December 24, 2021 5:51:55 AM >> To: alan Snyder <fishgar...@cbfiddle.com>; core-libs-dev < >> core-libs-dev@openjdk.java.net> >> Subject: Re: a quick question about String >> >> new String() always creates a new instance. >> >> Gruss >> Bernd >> -- >> http://bernd.eckenfels.net >> ________________________________ >> Von: core-libs-dev <core-libs-dev-r...@openjdk.java.net> im Auftrag von >> Alan Snyder <javali...@cbfiddle.com> >> Gesendet: Thursday, December 23, 2021 6:59:18 PM >> An: core-libs-dev <core-libs-dev@openjdk.java.net> >> Betreff: a quick question about String >> >> Do the public constructors of String actually do what their documentation >> says (allocate a new instance), or is there some kind of compiler magic >> that might avoid allocation? >> >> > > -- > Simon Roberts > (303) 249 3613 >