I Java är strängar objekt av en speciell klass som heter "String
";
inte en primitiv datatyp och inte heller en array.
Tecknen i en sträng är av "char
"-typ, dvs Unicode-tecken.
Objekt av typ String
är konstanta—man kan inte ändra i en sträng.
(Det finns en klass StringBuffer
som tillåter ändringar.)
Genom att skriva
"En sträng"
skapas en sträng.
Strängar slås ihop (konkateneras) med operatorn +
Om a
och b
är strängar så returnerar uttrycket
a + b
en ny sträng som är konkateneringen av a
och b
.
Så "fem" + "tio" är "femtio", men "5" + "10" är "510".
Om det ena argumentet till operationen +
är ett
String
-objekt, så omvandlas det andra till en sträng.
int x = 42; System.out.println("Shoesize: " + x);
Utskrift: Shoesize: 42
Notera att två strängar kan ha samma innehåll utan att vara identiska.
Operatorn ==
testar om två referenser är till samma objekt.
Om du vill testa om två strängar s1
och s2
har samma innehåll måste du
skriva:
s1.equals(s2)
String a = "java.1.4.2"; String b = new String("java.1.4.2"); //Tvinga kompilatorn att skapa ett nytt objekt! System.out.println("a==b : " + (a==b)); System.out.println("a.equals(b) : " + (a.equals(b)));
ger utskriften
a==b : false a.equals(b) : true
Notera att kompilatorn ibland undviker att skapa nya strängar genom
att återanvända befintliga. Till exempel: Om strängen "java.1.4.2"
förekommer på olika platser i programmet är det troligt att samma
sträng-objekt används för samtliga. Därför kan en jämförelse med
==
ibland fungera när man inte väntar det!