Strings are Immutable!

Classic programmed-learning exercises, refreshed for modern Java and presented in the current MrStyner.com portfolio style.

Modern Java noteThis archive has been refreshed for Java 25 LTS. Core language concepts remain useful, while outdated setup instructions and browser-era Java are labeled or replaced. Java 26 is the current feature release; Java 25 is used here as the stable teaching baseline.
go to previous page   go to home page   go to next page
String str = new String("I recognize the vestiges of an old flame.");
str.substring( 16 );
System.out.println( str );

Answer:

I recognize the vestiges of an old flame.


The code is syntactically correct and will compile and run, but what it does might not be what the author intended. (The author probably intended to write out a substring of the above phrase.)

Strings are Immutable!

Programmers often forget that String objects are immutable. Once a String object has been constructed, it cannot be changed. This line of code:

str.substring( 16 );

correctly creates a new object, containing a substring of the characters of the original object. However, the original object is not changed. Since the reference variable str points to the original object and does not change, the new object immediately becomes garbage. The next statement

System.out.println( str );

writes out the characters in the original object.


QUESTION 2:

How would you modify the program so that the new substring is written?