tags:

views:

91

answers:

1

Hi,

I have always wondered what the most effective way is of creating String's in Java. By this I mean strings that won't change in value.

Example:

String prefix = "Hi, I am ";

The prefix won't change but the postfix might.

  • I don't want to make the prefix a static final variable as it will always stay alive in the JVM even if the class is rarely used...bla bla.

  • and when I do the following:

    String fullWord = ("Hi, I am "+_postFix);

    I am guessing that the "Hi, I am" String value will remain in the Java String pool and I don't have the "overhead" of declaring the prefix as a variable.

Meaning my question boils down to this:

  1. Will the Java String pool always be used when and when I don't declare a String variable using the new keyword?

  2. Is it better to declare a String as a variable before using it?

  3. How does the String pool work? Does the JVM detect that a same String value is often used and keeps referring to that String in JVM memory?

+10  A: 
  1. All literal Strings are interned.
  2. Write code that is easy to understand. It really is not worth trying to nano-optimise this.
  3. All literal Strings loaded by class loaders are interned, as are Strings returned by String.intern (which is a slow way of doing it, in typical implementations).
Tom Hawtin - tackline
I agree with #2, but there's value in knowing why stuff works, not just how to do it.
Tony Ennis