Initialisering av streng i Java

1. Introduksjon

Java String er en av de viktigste klassene, og vi har allerede dekket mange aspekter i vår String-relatert serie opplæringsprogrammer.

I denne opplæringen vil vi fokusere på String initialisering i Java.

2. Skapelse

Først og fremst bør vi huske hvordan Strings er opprettet i Java.

Vi kan bruke ny nøkkelord eller bokstavelig syntaks:

Streng ved hjelp av Ny = ny streng ("baeldung"); String ved hjelp av Literal = "baeldung";

Og det er også viktig at vi forstår hvordan Strings administreres i et spesialisert basseng.

3. String Kun erklæring

Først, la oss bare erklære en String, uten å tildele en verdi eksplisitt.

Vi kan enten gjøre dette lokalt eller som en medlemsvariabel:

offentlig klasse StringInitialization {String fieldString; ugyldig printDeclaredOnlyString () {String localVarString; // System.out.println (localVarString); -> kompileringsfeil System.out.println (fieldString); }}

Som vi kan se, hvis vi prøver å bruke localVarString før vi gir den en verdi, får vi en kompileringsfeil. På den annen side vil konsollen vise “null" til feltstreng’S verdi.

Se, medlemsvariabler initialiseres med en standardverdi når klassen er konstruert, null i String‘S sak. Men, vi må initialisere lokale variabler selv.

Hvis vi gir localVarString en verdi av null, får vi se at de to faktisk er nå like:

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

4. String Initialisering ved hjelp av litteratur

La oss nå lage to Strings bruker samme bokstavelige:

String literalOne = "Baeldung"; String literalTwo = "Baeldung";

Vi bekrefter at bare ett objekt opprettes ved å sammenligne referansene:

assertTrue (literalOne == literalTwo);

Årsaken til dette trekker tilbake til det faktum at Strings lagres i et basseng. literalOne legger til String “Baeldung” til bassenget, og bokstavelig to gjenbruker det.

5. String Initialisering ved hjelp av ny

Vi vil se litt annen oppførsel, men hvis vi bruker ny nøkkelord.

Streng newStringOne = ny streng ("Baeldung"); String newStringTwo = new String ("Baeldung");

Selv om verdien av begge Strings vil være det samme som tidligere, vi må forskjellige objekter denne gangen:

assertFalse (newStringOne == newStringTwo);

6. Tom Strings

La oss nå lage tre tomme Strings:

String emptyLiteral = ""; String tomNyString = ny streng (""); String emptyNewStringTwo = ny streng ();

Som vi vet nå, de tom bokstav vil bli lagt til String bassenget, mens de to andre går direkte på haugen.

Selv om dette ikke vil være de samme objektene, vil alle ha samme verdi:

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

7. null Verdier

Til slutt, la oss se hvor null Strings oppføre seg.

La oss erklære og initialisere en null String:

Streng nullValue = null;

Hvis vi skrev ut nullValue, ville vi sett ordet “null”, som vi tidligere så. Og hvis vi prøvde å påkalle noen metoder på nullValue, vi får en NullPointerException, som forventet.

Men, hvorfor blir “null” skrevet ut? Hva er null faktisk?

JVM-spesifikasjonen sier det null er standardverdien for alle referanser, så den er ikke spesifikt knyttet til String. Og faktisk krever spesifikasjonen ingen konkret verdikoding for null.

Så, hvor kommer "null" fra for utskrift a String deretter?

Hvis vi tar en titt på PrintStream #utskrift implementering, vil vi se det kaller Streng # verdi Av:

public void println (Object x) {String s = String.valueOf (x); synkronisert (dette) {print (s); ny linje(); }}

Og, hvis vi ser på Streng # verdi av, vi får svaret vårt:

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

Og, åpenbart, det er grunnen til "null".

8. Konklusjon

I denne artikkelen utforsket vi String initialisering. Vi forklarte forskjellen mellom erklæring og initialisering. Vi berørte også bruk ny og bruke bokstavelig syntaks.

Til slutt tok vi en titt på hva det vil si å tildele en null verdi til en String, hvordan i null verdien er representert i minnet, og hvordan den ser ut når vi skriver den ut.

Alle kodeeksempler som brukes i artikkelen er tilgjengelig på Github.