Java >> Java tutorial >  >> Tag >> String

String equals() Vs contentEquals() i Java

1. Introduktion

equals() og contentEquals() metoder for strengen klasse i Java bruges til at udføre String sammenligning. Der er dog specifikke forskelle mellem funktionaliteterne af disse to metoder.

I denne øvelse tager vi et hurtigt kig på forskellene mellem disse to metoder ved hjælp af praktiske eksempler.

2. equals() Metode

equals() metoden er en offentlig metoden for Java strengen klasse. Det tilsidesætter originalen equals() metode fra Objekt klasse. Signaturen for denne metode er:

public boolean equals(Object anObject)

Metoden sammenligner to forskellige String s ved at kontrollere individuelle tegn i begge. Men metoden kontrollerer ikke kun for indholdet, men kontrollerer også, om objektet er en forekomst af String . Derfor returnerer metoden kun sand hvis alle disse betingelser er opfyldt:

  • argumentobjektet er ikke null
  • det er en streng objekt
  • rækkefølgen af ​​tegn er identisk

3. contentEquals() Metode

Svarende til equals() metoden contentEquals() metode bruges også til at sammenligne strengens indhold. I modsætning til equals() metode, contentEquals() tager enhver implementering af CharSequence grænseflade som argument. Det betyder streng , StringBuffer , StringBuilder , CharBuffer, eller Segmenter kan sammenlignes.

Signaturen for denne metode er:

public boolean contentEquals(StringBuffer sb)
public boolean contentEquals(CharSequence cs)

Derfor er contentEquals() metode er kun beskæftiget med indholdet af strengen . Hvis argumentet er en streng objekt, equals() metode kaldes til sammenligning. På den anden side, hvis en generisk tegnsekvens er angivet, sammenligner metoden individuelle tegn i lignende positioner.

Metoden returnerer true hvis tegnsekvensen i det givne argument matcher den originale streng . I modsætning til equals() metode, hvis en null argumentet sendes til contentEquals() metode, kaster den en NullPointerException .

4. Eksempler

Lad os se disse to metoder i aktion ved at skrive simple testcases. For enkelhedens skyld, lad os bruge ordet "Baeldung" til vores kode.

Først tager vi to identiske streng genstande og kontroller dem. I dette tilfælde vil begge metoder returnere en true værdi:

String actualString = "baeldung";
String identicalString = "baeldung";

assertTrue(actualString.equals(identicalString));
assertTrue(actualString.contentEquals(identicalString));

Dernæst tager vi to forskellige implementeringer af CharSequence med identisk indhold. Til den første implementering instansierer vi CharSequence med en streng . I dette tilfælde skal begge metoder returnere true da indholdet og typerne er identiske:

CharSequence identicalStringInstance = "baeldung";

assertTrue(actualString.equals(identicalStringInstance));
assertTrue(actualString.contentEquals(identicalStringInstance));

Til det næste eksempel tager vi en StringBuffer implementering. Siden contentEquals() metoden kun kontrollerer for indholdet, bør den returnere true . Imidlertid er equals() metode skal false :

CharSequence identicalStringBufferInstance = new StringBuffer("baeldung");

assertFalse(actualString.equals(identicalStringBufferInstance));
assertTrue(actualString.contentEquals(identicalStringBufferInstance));

5. Konklusion

I denne artikel tog vi et hurtigt kig på strengens to metoder klasse. Mens equals() metoden sammenligner kun forekomster af String , contentEquals() metode kan sammenligne enhver implementering af CharSequence .

For at konkludere bør vi bruge contentEquals() når vi kun er bekymrede for objektets indhold. På den anden side kan det nogle gange være vigtigt at tjekke for typen af ​​objektet. I så fald skal vi bruge equals() metode, som giver os strengere kontrolbetingelser.

Som altid er kodestykkerne tilgængelige på GitHub.


Java tag