Originariamente inviato da valia
no, tu hai una rappresentazione interna di ciao ciao che viene clonata per creare la tua stringa, roba inutile nel 95% delle situazioni in cui basta fare solo un assegnamento.

Passare per il costruttore significa creare 2 oggetti con riferimenti diversi che hanno lo stesso contenuto (inefficiente appunto)
ma io ciao ciao lo passo come costante, che senso ha dire che ci sono 2 oggetti? dopo quella chiamata la costante "ciao ciao" non dovrebbe essere eliminata dal garbage collector e quindi in memoria mi ritrovo con 1 solo oggetto ovvero varX?