1. Sammenligning av strenger
Dette er vel og bra. Men du kan se at strengene s1
og s2
faktisk er de samme, noe som betyr at de inneholder samme tekst. Når du sammenligner strenger, hvordan forteller du programmet om ikke å se på adressene til String
objekter, men på innholdet deres?
For å hjelpe oss med dette har Javas String
klasse equals
metoden. Å kalle det ser slik ut:
string1.equals(string2)
Denne metoden returnerer true
hvis strengene er like, og false
hvis de ikke er like.
Eksempel:
Kode | Merk |
---|---|
|
|
Flere eksempler:
Kode | Forklaring |
---|---|
|
false |
|
true |
|
true |
|
true |
2. Snøresammenligning uten store og små bokstaver
I det siste eksemplet så du at sammenligningen gir . Strengene er faktisk ikke like. Men..."Hello".equals("HELLO")
false
Det er klart at strengene ikke er like. Når det er sagt, har innholdet de samme bokstavene og skiller seg bare fra tilfellet til bokstavene. Er det noen måte å sammenligne dem og se bort fra tilfellet med bokstavene? Det vil si, så det gir ?"Hello".equals("HELLO")
true
Og svaret på dette spørsmålet er ja. I Java String
har typen en annen spesiell metode: equalsIgnoreCase
. Å kalle det ser slik ut:
string1.equalsIgnoreCase(string2)
Navnet på metoden oversettes omtrent som sammenlign, men ignorer store og små bokstaver . Bokstavene i metodens navn inkluderer to vertikale linjer: den første er en liten bokstav L
, og den andre er en stor bokstav i
. Ikke la det forvirre deg.
Eksempel:
Kode | Merk |
---|---|
|
|
3. Eksempel på strengsammenligning
La oss gi et enkelt eksempel: anta at du må skrive inn to linjer fra tastaturet og finne ut om de er like. Slik vil koden se ut:
Scanner console = new Scanner(System.in);
String a = console.nextLine();
String b = console.nextLine();
String result = a.equals(b) ? "Same" : "Different";
System.out.println(result);
4. En interessant nyanse av strengsammenligning
Det er én viktig nyanse du må være klar over.
Hvis Java-kompilatoren finner flere identiske strenger i koden din (spesielt i koden din), vil den bare lage et enkelt objekt for dem for å spare minne.
String text = "This is a very important message";
String message = "This is a very important message";
Og her er hva minnet vil inneholde som et resultat:

Og hvis du sammenligner text == message
her, så får du true
. Så ikke bli overrasket over det.
Hvis du av en eller annen grunn virkelig trenger at referansene skal være annerledes, kan du skrive dette:
String text = "This is a very important message";
String message = new String ("This is a very important message");
Eller dette:
String text = "This is a very important message";
String message = new String (text);
I begge disse tilfellene peker variablene text
og message
til forskjellige objekter som inneholder samme tekst.
GO TO FULL VERSION