Cosa devi sapere sull’uso delle stringhe in Java

Una volta che inizi ad imparare Java, la classe String catturerà la tua attenzione, grazie alle sue proprietà uniche.

Puoi creare e manipolare stringhe in Java più facilmente rispetto ad altri linguaggi. Questo perché la classe String offre varie funzionalità.

Sulla base di queste funzionalità, esistono diversi metodi per generare e modificare le stringhe a seconda delle preferenze e delle esigenze. Allo stesso modo, molto dipenderà dall’applicazione e da dove devono essere utilizzate le stringhe.

In che modo le stringhe Java sono diverse?

Se hai già lavorato con il linguaggio C, sai che le stringhe in C sono un array di caratteri (caratteri). D’altra parte, le stringhe Java non sono modificabili e contengono caratteri Unicode.

Una delle caratteristiche chiave che rendono uniche le stringhe in Java è la concatenazione. Basta usare l’operatore di addizione “+” per unire due o più stringhe. Questo è qualcosa che non puoi fare con altri oggetti Java, come Point o Circle .

Inoltre, come accennato prima, le stringhe Java sono immutabili, ovvero non è possibile modificarle. Ad esempio, metodi come toUpperCase () e toLowerCase () generano una stringa completamente nuova, invece di apportare modifiche al contenuto della stringa esistente. Ora il tuo codice restituirà questa stringa appena generata.

Correlati: Come manipolare il testo in PHP con queste funzioni

Un’altra area in cui le stringhe sono diverse è quando si tratta di utilizzare caratteri null per terminare le stringhe in linguaggi come C. In Java, le stringhe sono oggetti supportati da array di caratteri. Se stai cercando di leggere il contenuto della tua stringa nel modo in cui gli array di caratteri li rappresentano, usare il metodo toCharArray () farà il lavoro.

Anche il confronto delle stringhe in Java è più conveniente che in altri linguaggi di programmazione. Invece di scrivere un lungo blocco di codice per confrontare le stringhe, puoi usare il metodo equals () per confrontare due o più stringhe usate in qualsiasi programma. Ciò è principalmente dovuto al fatto che, in Java, il metodo equals è sovrascritto dalla classe String, il che rende il confronto tra stringhe un gioco da ragazzi.

In una nota simile, anche la ricerca all’interno di sottostringhe in Java è senza problemi. Durante l’utilizzo di espressioni regolari o metodi come lastIndexOf () e indexOf (), puoi cercare segmenti di stringhe e restituire valori una volta identificata una corrispondenza. È inoltre possibile utilizzare espressioni regolari per tagliare e dividere stringhe diverse e utilizzarle singolarmente per un’ampia gamma di usi in qualsiasi programma.

Come vengono archiviate le stringhe nella memoria?

Ora che sai cosa rende le stringhe in Java diverse e vantaggiose, esploriamo la classe String. Se sai una o due cose sulla gestione della memoria in Java, devi aver avuto a che fare con le sue due entità chiave: heap e stack.

Lo stack viene utilizzato per eseguire processi e operazioni dopo essere stato chiamato da un programma Java, mentre l’heap archivia il contenuto, necessario per eseguire ed eseguire il codice in modo efficace. Allora, come è rilevante la gestione della memoria nel caso delle stringhe?

Questo perché la classe String e le stringhe letterali in Java ricevono un trattamento diverso. Ciò indica che ai valori letterali stringa viene assegnato uno spazio di archiviazione univoco nella memoria heap, denominato String Constant Pool. Pertanto, ogni volta che si utilizzano valori letterali stringa per creare oggetti stringa in Java, il pool di costanti stringa li memorizza.

Al contrario, quando si utilizza la nuova parola chiave per creare oggetti stringa, Java li tratterà come qualsiasi altro oggetto e li invierà all’heap per l’archiviazione.

Esempio di valori letterali di stringa

Ora che ne sai abbastanza sugli oggetti stringa, esaminiamo un esempio di valori letterali stringa:


public class muostrings {
 public static void main(String args[])
 {
 String himuo = "Hello World from MUO";
 System. out .println (himuo);
 }
 }

Qui, il valore letterale stringa ha creato l’oggetto String con contenuto “Hello World from MUO”. Java invierà questo oggetto allo String Constant Pool.

Utilizzo della nuova parola chiave

È inoltre possibile utilizzare la nuova parola chiave per generare oggetti String.

L’oggetto stringa della stringa “himuo” con contenuto “Hello World from MUO” è stato generato da una stringa letterale e verrà inviato allo String Constant Pool. Allo stesso modo, gli oggetti stringa possono anche essere creati utilizzando la nuova parola chiave come segue:


public class muostringsobj {
 public static void main(String args[]) {
 char [] strArr = { 'M', 'O', 'U'};
 String jStr = new String(strArr);
 System. out .println( jStr );
 }
 }

L’esempio precedente utilizza la nuova parola chiave per creare un oggetto stringa. Come spiegato in precedenza, vengono inviati all’heap, dove vengono memorizzati con altre variabili e oggetti in attesa di essere eseguiti dal programma.

A questo punto, devi essere curioso riguardo allo String Constant Pool, ed è giusto che sia così. Alloca lo spazio del pool agli oggetti in base al contenuto dell’oggetto stringa. Dopo che String Constant Pool riceve gli oggetti, li controlla per verificare se due oggetti contengono esattamente lo stesso contenuto.

Due oggetti stringa possono memorizzare lo stesso contenuto?

Quando un valore letterale stringa viene utilizzato per creare un nuovo oggetto, Java Virtual Machine (JVM) esamina il contenuto dell’oggetto e valuta se esiste già nel pool. Quando un oggetto contiene contenuto che è già presente nel pool, il riferimento dell’oggetto viene restituito senza creare il nuovo oggetto. Se devi creare il nuovo oggetto, devi assicurarti che il contenuto sia distinto e unico.

Tuttavia, se utilizzi la nuova parola chiave per creare una nuova stringa, verrà elaborata in modo diverso. Quando si utilizza la nuova parola chiave per creare una nuova stringa, verrà generata, indipendentemente dal fatto che contenga lo stesso contenuto della stringa esistente.

Ciò indica che due oggetti stringhe esistenti archiviati nella memoria heap possono avere lo stesso contenuto; questo è diverso dagli oggetti stringa memorizzati nel pool di costanti di stringhe. Puoi anche dimostrarlo con l’operatore “==”; restituisce vero se vengono confrontati due oggetti con lo stesso indirizzo fisico.


public class comparingStrngs {
 public static void main(String[] args)
 {
 String firstLiteral = "muo1";
 String secondLiteral = "muo1";
 System. out .println(firstLiteral == secondLiteral);
 String firstKeyword = new String("muo2");
 String secondKeyword = new String("muo2");
 System. out .println(firstKeyword == secondKeyword);
 }
 }

Ora puoi capire facilmente le stringhe in Java

In questo articolo, hai appreso come le stringhe in Java sono diverse, i modi per utilizzare le stringhe in Java, la gestione della memoria delle stringhe in Java e altri importanti dettagli sul funzionamento delle stringhe. Per verificare la tua comprensione, perché non scrivere un programma Java per concatenare due stringhe?