Sådan sammenligner du Strings i Java og mere om Strings
Ja, jeg vil tale om et af yndlingsemnerne eller måske det mest omstridte emne for strenge i programmeringssprog. Dette indlæg vil dække, hvordan man bruger strenge i Java.
Spørgsmål
Et af begynderspørgsmålene i Java er, hvordan man sammenligner strenge i java?
Løsning
Det korte svar er .equals sammenligne værdierne af to strenge og se, om de er ens eller ej. Operatør == sammenligne de to strengobjekter og se, om de refererer til den samme hukommelsesadresse.
Eksempel:
String str1 = new String("test"); String str2 = new String("test"); str1.equals(str2) - This will return true. str1 == str2 - This will return false.
Kommentar
På trods af at Java understøtter operator ==for strenge, bruges den ikke ofte til strengsammenligning. Objektreferencetjek sker sjældent. En anden anomali ved dette er, hvis to strenge er nul.
Eksempel:
String str1 = null; String str2 = null; str1 == str2 - this will return true. str1.equals(str2) - this will throw null pointer exception (NPE).
Java tilbyder en anden metode kaldet compareTo til String-sammenligning. Dette kan bruges på følgende måde
Eksempel:
String str1 = "test"; String str2 = "test"; str1.compareTo(str2) == 0 - This will return true.
Mere om Strings
Vi har alle set StringBuffer
, StringBuilder
, StringWriter
, StringTokenizer
eller bare almindelig String
. Hvad er alle disse forskellige aspekter af String, og hvornår skal de bruges? Er dette ikke for meget at vide, når du bare vil bruge et simpelt String-objekt. Dette indlæg vil dække nogle oplysninger om alle disse forskellige klasser, som Java tilbyder.
StringBuffer
StringBuffers
er trådsikre, de er bare en synkroniseret version af StringBuilder
. StringBuffer
tilbyder nogle nyttige metoder som f.eks. tilføje og vende.
Eksempel:
StringBuffer sb = new StringBuffer(); sb.append("first string"); sb.toString();
StringBuilder
StringBuilder
er ikke trådsikker, men de tilbyder bedre ydeevne end StringBuffer
. Du kan sige StringBuffer
er trådsikker version af StringBuilder
.
StringTokenizer
StringTokenizer
er helt anderledes end StringBuffer
og StringBuilder
da det hovedsageligt bruges til at opdele strenge i token ved en afgrænser. StringBuffer
og StringBuilder
bruges til at bygge strenge.
StringWriter
StringWriter
er en tegnstrøm, der samler outputtet i en strengbuffer. Kort sagt kan du sige, at den bruger StringBuffer nedenunder. Dette er en IO-stream, der ligner File IO, men du kan stadig få adgang til StringWriter, selv efter at streamen er blevet lukket.
Eksempel:
StringWriter sw = new StringWriter(); sw.write("this is first string"); sw.toString();
Konklusion
I denne artikel viste vi strengsammenligning og forskellige former for strengbygning. Hvis du kunne lide dette indlæg, så abonner på min blog. Hvis du vil læse mere om Strings, kan du læse her.