Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #27877
| Path | csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!eternal-september.org!feeder.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail |
|---|---|
| From | Eric Sosman <esosman@comcast-dot-net.invalid> |
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: how actually string store in java machine |
| Date | Wed, 26 Mar 2014 13:54:28 -0400 |
| Organization | A noiseless patient Spider |
| Lines | 71 |
| Message-ID | <lgv48i$528$1@dont-email.me> (permalink) |
| References | <8f7d9272-4b25-44c9-8c31-93ea754be4cb@googlegroups.com> <lgsflf$pua$1@dont-email.me> <lgslfc$k81$1@news.albasani.net> <lgslj6$k81$2@news.albasani.net> <b9f4j99knq24nqdmi1ultckkm82ecem7v6@4ax.com> <lguruv$1dm$1@dont-email.me> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=ISO-8859-1; format=flowed |
| Content-Transfer-Encoding | 8bit |
| Injection-Date | Wed, 26 Mar 2014 17:54:26 +0000 (UTC) |
| Injection-Info | mx05.eternal-september.org; posting-host="bd4e1cba8d8592bec5d5ed9e4537fbfd"; logging-data="5192"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/vImAPNlMlkQspyz5QhCsK" |
| User-Agent | Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 |
| In-Reply-To | <lguruv$1dm$1@dont-email.me> |
| Cancel-Lock | sha1:X8tTGrG5qkZTkLDbpzNs8eE7NK8= |
| Xref | csiph.com comp.lang.java.programmer:27877 |
Show key headers only | View raw
On 3/26/2014 11:32 AM, markspace wrote:
> On 3/25/2014 7:37 PM, Roedy Green wrote:
>> On Tue, 25 Mar 2014 20:31:50 +0100, Jan Burse <janburse@fastmail.fm>
>> wrote, quoted or indirectly quoted someone who said :
>>
>>>
>>> http://stackoverflow.com/questions/16690815/shared-constant-pool
>>
>> I was under the impression all string constants lived in the same pool
>> along with the interned strings. That would imply a shared constant
>> pool since day 1. Have I had this wrong since Java 1.0?
>>
>
>
> Yes, I'm pretty sure you've been wrong if that's what you thought. Each
> class has its own pool of strings. If you have a class with a constant
> string:
>
> String a = "a";
> String b = "a";
>
> The constant "a" is only stored once, and a==b will be true. But that's
> only for a single class file. Outside of the class file, each string is
> unique and a different object. I don't think any implementations of the
> JVM called String.intern() for each constant string read in each class
> file.
// Foo.java:
public class Foo {
public static String HELLO = "Hello";
}
// FooBar.java:
public class FooBar {
public static void main(String[] unused) {
System.out.println("Foo.HELLO == \"Hello\": "
+ (Foo.HELLO == "Hello"));
}
}
... prints
Foo.HELLO == "Hello": true
... on my Java 1.7.0_51 system. You might also want to re-read
Section 3.10.5 of the Java Language Specification; for Java 7 and 8
it reads (in part)
"Moreover, a string literal always refers to the /same/
instance of class String. This is because string literals -
or, more generally, strings that are the values of constant
expressions (§15.28) - are "interned" so as to share unique
instances, using the method String.intern."
Java 6 words it a bit differently:
"String literals-or, more generally, strings that are the
values of constant expressions (§15.28)-are "interned" so
as to share unique instances, using the method String.intern."
... and goes on to give a multi-class, multi-package example.
> And certainly if you read a string from a file or the network, the VM
> does not call String.intern() for you. That would be silly.
That would be silly, yes. But the handling of literals is
a different matter, and does not behave as you described.
--
Eric Sosman
esosman@comcast-dot-net.invalid
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
how actually string store in java machine Rishipal Singh <95rishipal@gmail.com> - 2014-03-25 09:56 -0700
Re: how actually string store in java machine Roedy Green <see_website@mindprod.com.invalid> - 2014-03-25 10:32 -0700
Re: how actually string store in java machine Roedy Green <see_website@mindprod.com.invalid> - 2014-03-25 10:33 -0700
Re: how actually string store in java machine Jeff Higgins <jeff@invalid.invalid> - 2014-03-25 13:49 -0400
Re: how actually string store in java machine Jan Burse <janburse@fastmail.fm> - 2014-03-25 20:29 +0100
Re: how actually string store in java machine Jan Burse <janburse@fastmail.fm> - 2014-03-25 20:31 +0100
Re: how actually string store in java machine Roedy Green <see_website@mindprod.com.invalid> - 2014-03-25 19:37 -0700
Re: how actually string store in java machine Jan Burse <janburse@fastmail.fm> - 2014-03-26 09:03 +0100
Re: how actually string store in java machine Jan Burse <janburse@fastmail.fm> - 2014-03-26 09:11 +0100
Re: how actually string store in java machine Jan Burse <janburse@fastmail.fm> - 2014-03-27 10:27 +0100
Re: how actually string store in java machine markspace <markspace@nospam.nospam> - 2014-03-26 08:32 -0700
Re: how actually string store in java machine Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-03-26 13:54 -0400
Re: how actually string store in java machine taqmcg@gmail.com - 2014-03-26 12:57 -0700
Re: how actually string store in java machine markspace <markspace@nospam.nospam> - 2014-03-26 16:37 -0700
Re: how actually string store in java machine Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-03-27 08:54 -0400
Re: how actually string store in java machine taqmcg@gmail.com - 2014-03-27 08:23 -0700
Re: how actually string store in java machine Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-03-27 11:50 -0400
Re: how actually string store in java machine taqmcg@gmail.com - 2014-03-28 06:58 -0700
Re: how actually string store in java machine Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-03-28 11:02 -0400
Re: how actually string store in java machine taqmcg@gmail.com - 2014-04-02 05:47 -0700
Re: how actually string store in java machine Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-04-02 10:15 -0400
Re: how actually string store in java machine taqmcg@gmail.com - 2014-04-03 08:58 -0700
Re: how actually string store in java machine Roedy Green <see_website@mindprod.com.invalid> - 2014-03-26 17:07 -0700
Re: how actually string store in java machine Jeff Higgins <jeff@invalid.invalid> - 2014-03-25 16:07 -0400
Re: how actually string store in java machine Jeff Higgins <jeff@invalid.invalid> - 2014-03-25 16:16 -0400
Re: how actually string store in java machine Jeff Higgins <jeff@invalid.invalid> - 2014-03-25 16:19 -0400
Re: how actually string store in java machine markspace <markspace@nospam.nospam> - 2014-03-25 14:00 -0700
Re: how actually string store in java machine Jeff Higgins <jeff@invalid.invalid> - 2014-03-25 17:21 -0400
Re: how actually string store in java machine Jeff Higgins <jeff@invalid.invalid> - 2014-03-26 11:40 -0400
Re: how actually string store in java machine Roedy Green <see_website@mindprod.com.invalid> - 2014-03-26 17:46 -0700
Re: how actually string store in java machine Lew <lewbloch@gmail.com> - 2014-03-25 15:07 -0700
csiph-web