? Java programmer modell kode komponenter som objekter , med hvert objekt å ha et ansvarsområde . Objekter gi metoder for å utføre sine oppgaver . Noen metoder i Java iverksettes av alle mulige objekter, inkludert strenger . Java rammeverk lar utviklere bruke visse typer datalagring struktur , noen som bruker hash - kode verdier å lagre elementer . En hash - kode verdi bruker en kode for å referere til et bestemt objekt , slik at samlingen klassen for å implementere effektive metoder for lagring av flere objekter innenfor programmet . Java-kode kan beregne hash - kode verdier for alle objekter , inkludert strykere , som er uforanderlig . String innhold
String variabler i Java-programmer er objekter av String klassen , lagring sekvenser av tekst. Dette kan være forvirrende , fordi programmene skaper strengvariabler bruker samme type struktur som brukes for primitive typen variabler som tall. Følgende eksempelkode demonstrerer skape en streng variabel : String name = " John" ,
Programmet kan utføre metoder for String klassen på denne variabelen , noen som involverer å endre tekstinnhold . Metoder som endrer innholdet av en streng returnerer vanligvis en ny streng , i stedet for å endre den eksisterende streng. Dette er fordi strengene er uforanderlig, noe som betyr at når en streng variabel er opprettet, kan innholdet ikke endres . Programmer der innholdet av en streng synes å endres faktisk lage nye strenger å erstatte eksisterende .
HashCode Funksjon
Alle objekter i Java gi " hashCode "-funksjonen . Dette er fordi alle Java-klasser arver fra superklassen Object , som gir den " hashCode " metoden. Følgende eksempelkode demonstrerer kalle metoden på String variabel: name.hashCode ();
Calling denne metoden fører til Java for å generere en hash - kode verdi for strengvariabelen spesifisert. Opprette en hash - kode verdi for en streng objekt innebærer den samme prosessen som du ville bruke for ethvert objekt.
På
" hashCode "-metoden resulterer i en heltallsverdi som representerer det aktuelle objektet . Dette nummeret lar Java -klasser for å optimalisere på effektivitet når du skal lagre data verdier , særlig i forbindelse med HashMap klassen eller andre relaterte samlinger klasser . I de fleste tilfeller har ikke en Java -programmerer ikke trenger å bekymre seg om detaljene i de tallene som brukes som hash - koder for elementer som strenger , som samlinger klasser håndtere denne detalj .
Likestilling
resultatet av å kalle " hashCode " på to elementer som er lik skal være samme antall . For eksempel bør følgende to strengvariabler generere samme hash - kode verdi: String somename = " John" ; String otherName = " John" ,
p Hvis to objekter gir et sant resultat når det brukes innenfor er lik metoden, så Java anser dem ikke være like, i hvilket tilfelle de bør resultere i den samme hash - koden. For eksempel vil følgende kode resultere i en sann verdi : boolean areEqual = someName.equals ( otherName ) ;
p Det er vanligvis slik at hvis to strenger ikke er like, vil de generere ulike hash - kode verdier , men dette er ikke garantert . (Se Referanser 1 , 2, 3 )