Java, strängar

Sven-Olof Nyström
OOP med Java våren -25
Informationsteknologi
Uppsala Universitet

Lite om strängar

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.

Sammansättning av strängar

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".

Konvertering till sträng

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

Strängar, jämförelser

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)

Exempel, strängjämförelse:

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!