Appending “” to a string will sometimes save memory.
Let’s say I have a huge string containing a whole book, one million characters.
Then I create 20 strings containing the chapters of the book as substrings.
Then I create 1000 strings containing all paragraphs.
Then I create 10,000 strings containing all sentences.
Then I create 100,000 strings containing all the words.
I still only use 1,000,000 characters. If you add “” to each chapter, paragraph, sentence and word, you use 5,000,000 characters.
Of course it’s entirely different if you only extract one single word from the whole book, and the whole book could be garbage collected but isn’t because that one word holds a reference to it.
And it’s again different if you have a one million character string and remove tabs and spaces at both ends, making say 10 calls to create a substring. The way Java works or worked avoids copying a million characters each time. There is compromise, and it’s good if you know what the compromises are.
Leave an answer