Inizializzazione delle stringhe in Java

Blog

Scopri la differenza tra dichiarazione e inizializzazione di String in Java.



1. Introduzione

Java* String *è una delle classi più importanti e abbiamo già trattato molti dei suoi aspetti nel nostro Corda -serie di tutorial correlati .






In questo tutorial, ci concentreremo su Corda inizializzazione in Java.



2. Creazione

Prima di tutto, dovremmo ricordare come Corda vengono creati in Java.



Possiamo usare il nuovo parola chiave o la sintassi letterale:






String usingNew = new String('baeldung'); String usingLiteral = 'baeldung';

Ed è anche importante capire come Corda s sono gestiti in un pool .

convalidare il numero di telefono laravel

3. Corda Solo dichiarazione

Per prima cosa, basta dichiarare a Corda , senza assegnare un valore in modo esplicito.

Possiamo farlo localmente o come variabile membro:

public class StringInitialization { String fieldString; void printDeclaredOnlyString() { String localVarString; // System.out.println(localVarString); -> compilation error System.out.println(fieldString); } }

Come possiamo vedere, se proviamo a usare *localVarString *prima di dargli un valore, otterremo un errore di compilazione. D'altra parte, la console mostrerà nullo per campoStringa il valore.

Vedere, le variabili membro sono inizializzate con un valore predefinito quando la classe è costruita, nullo in Corda il caso. Ma, dobbiamo inizializzare noi stessi le variabili locali.

pagina di accesso alla posta di roadrunner

Se diamo *localVarString *un valore di nullo , vedremo che i due sono, infatti, ora uguali:

String localVarString = null; assertEquals(fieldString, localVarString);

Quattro. Corda Inizializzazione tramite letterali

Creiamo ora due Corda s usando lo stesso letterale:

String literalOne = 'Baeldung'; String literalTwo = 'Baeldung';

Confermeremo che viene creato un solo oggetto confrontando i riferimenti:

assertTrue(literalOne == literalTwo);

La ragione di ciò si ricollega al fatto che Corda i messaggi sono memorizzati in un pool . ***literalOne **aggiunge *String *baeldung al pool e *literalTwo lo riutilizza.

5. Corda Inizializzazione utilizzando nuovo

Vedremo un comportamento diverso, tuttavia, se usiamo la *nuova *parola chiave.

dove acquistare dot crypto
String newStringOne = new String('Baeldung'); String newStringTwo = new String('Baeldung');

Sebbene il valore di entrambi Corda s sarà lo stesso di prima, questa volta dovremo oggetti diversi:

assertFalse(newStringOne == newStringTwo);

6. Vuoto Corda S

Creiamo ora tre vuoti Corda S:

String emptyLiteral = ''; String emptyNewString = new String(''); String emptyNewStringTwo = new String();

Come ormai sappiamo, il vuotoLetterale verrà aggiunto al Corda pool, mentre gli altri due vanno direttamente sul mucchio.

Sebbene questi non saranno gli stessi oggetti, avranno tutti lo stesso valore :

assertFalse(emptyLiteral == emptyNewString) assertFalse(emptyLiteral == emptyNewStringTwo) assertFalse(emptyNewString == emptyNewStringTwo) assertEquals(emptyLiteral, emptyNewString); assertEquals(emptyNewString, emptyNewStringTwo);

7. nullo Valori

Infine, vediamo come null Corda si comportano bene.

Dichiariamo e inizializziamo un null Corda :

la connessione al file aziendale è stata persa
String nullValue = null;

Se stampassimo nullValue , vedremmo la parola null, come abbiamo visto in precedenza. E, se provassimo a invocare qualsiasi metodo su *nullValue, *avremmo a NullPointerException, come previsto.

Ma, perché viene stampato null? Cos'è nullo in realtà?

Bene, il Specifiche JVM Dillo nullo è il valore predefinito per tutti i riferimenti, quindi non è specificamente legato al Corda . E in realtà, la specifica non impone alcuna codifica di valore concreto per nullo .

**Quindi, da dove deriva null per la stampa di una *Stringa * poi?

Se diamo un'occhiata al PrintStream#println implementazione, vedremo che chiama String#valueOf :

hosting di app angolari su iis
public void println(Object x) { String s = String.valueOf(x); synchronized (this) { print(s); newLine(); } }

E,** se guardiamo a *String#valueOf, * otteniamo la nostra risposta:

public static String valueOf(Object obj) { return (obj == null) ? 'null' : obj.toString(); }

E, ovviamente, questo è il motivo del null.

8. Conclusione

In questo articolo, abbiamo esplorato Corda inizializzazione. Abbiamo spiegato la differenza tra dichiarazione e inizializzazione. Abbiamo anche toccato l'uso nuovo e utilizzando la sintassi letterale.

Infine, abbiamo dato un'occhiata a cosa significa assegnare a nullo valore ad a Corda , come il nullo il valore è rappresentato in memoria e come appare quando lo stampiamo.

Tutti gli esempi di codice utilizzati nell'articolo sono disponibili su Github .

#java #stringa

www.baeldung.com

Inizializzazione delle stringhe in Java

Scopri la differenza tra dichiarazione e inizializzazione di String in Java.