Meniu Referate
Romana
Romana1
Romana2
Istorie
Istorie1
Geografie
Geografie1
Diverse
Drept
Economie
Filozofie
Fizica
Informatica
Biologie
Chimie
Italiana
Spaniola
Germana
Franceza
Engleza
Marketing
Matematica
Medicina
Psihologie
Astronomie
Stiinte Politice
Proiecte

String to String int hashCode object clone void finalize JAVA

... protected void finalize t MERGEFORMAT xmp Obs obiectele de tip array permit de asemenea suprascrierea acestor metode. Trei dintre aceste metode sunt publice si pot fi suprascrise de orice instante obiect, in timp ce doua metode sunt protejate si din acest motiv trebuie declarate publice in momentul in care sunt suprascrise. Vom analiza pe rand aceste metode boolean equalsObject obj Metoda folosita pentru a compara doua obiecte obiectul pentru care se apeleaza metoda si obiectul transmis ca parametru. Metoda implicita oferita de clasa Object returneaza true daca cele doua obiecte reprezinta de fapt acelasi obiect, folosindu-se operatorul . Ramane in sarcina programatorului sa decida cum se compara doua obiecte ale aceleeasi clase. Documentatia JDK defineste un set riguros de reguli ce trebuie avute in vedere atunci cand se doreste stabilirea egalitatii intre boua obiecte. Metoda equals implementeaza o relatie de echivalenta Este reflexiva Este simetrica Este tranzitiva String toString Metoda returneaza o reprezentare de tip String pentru obiectul care o apeleaza. Implicit returneaza un Sring sub forma ClassName i 1cc7a0, adica numele clasei urmat de caracterul i si apoi o valoare in hexa a codului hash. Pentru a genera o reprezentare mult mai utila putem supraincarca acesta metoda si returna orice String care sa ne ofere informatii despre obiect. int hashCode Un hash cod este o valoare intreaga ce reprezinta intreaga valoare a unui obiect. Codurile hash sunt folosite drept chei in tabelele de dispersie asa cum este implementata clasa HashTable din pachetul java.util. Versiunea implicita a metodei va incerca sa genereze un cod pentru fiecare obiect dar se poate ca la un moment dat sa genereze valori diferite pentru un acelasi obiect. Daca se intampla acest lucru atunci trebuie sa suprascriem metoda pentru a implementa o noua functie de dispersie hash function care va genera codurile hash corecte. De fiecare data cand este invocata metoda hashCode asupra aceluiasi obiect ea trebuie sa returneze in mod constant aceeasi valoare intreaga. Daca doua obiecte sunt egale conform metodei equals, atunci apeland metoda hashCode pentru fiecare din cele doua obiecte trebuie sa obtinem acceasi valoare intreaga. Programatorii se bazeaza de obicei pe implementarea implicita a metodei hashCode decat sa implementeze o noua versiune ceea ce poate duce la o munca destul de dificila. object clone Metoda va crea o copie a obiectului. Implicit doar obiectul curent este copiat si nu si celelalte obiecte spre care acesta poate avea referinte. Valorile primitive in Java sunt intotdeauna copiate. Metoda suprascrisa trebuie declarata public. Daca un obiect nu poate fi clonat va fi aruncata exceptia CloneNotSupportedException. void finalize Acesta metoda este apelata automat de colectorul de gunoaie garbage collector cand un obiect nu mai este referentiat si poate fi sters din memorie. Varianta implicita nu contine nici o instructiune in corpul metodei. Colectorul de gunoaie poate rula oricand, astfel incat nu se poate determina cu exactitate cand va fi apelata metoda finalize. Putem supraincarca acesta metoda in cazul in care de exemplu anumite date trebuie salvate intr-un fisier inainte de a fi pierdute sau o conexiune pe retea trebuie inchisa. Daca apare o eroare metoda poate folosi in declaratie si clauza thro, aruncand o exceptie de tipul Throable. Daca acesta exceptie este aruncata atunci ea va fi prinsa de colectorul de gunoaie si ignorata, lasand programul sa-si desfasoare executia pana la final. Cam atat cu teoria !!! - Sa trecem la fapte, adica sa discutam pe exemple concrete Presupun cunoscut modul cum se compileaza programele in Java si cum se ruleaza. Pentru incepatori recomand cartea Thinking in Java Second Edition de Bruce Eckel, care poate fi donload-ata de pe site-ul autorului .bruceeckel.com. Incepem cu implementarea clasei ObjectMethods.java t MERGEFORMAT xmpimport java.util.Date class ObjectMethods extinde implicit clasa Object I public ObjectMethodsint a, Date b, Stringisc constructor cu parametri I i a d b s c S private ObjectMethods constructor fara parametri IS public boolean equalsObject obj mostenita din Object si suprascrisa I if this obj return true if obj null !obj instanceof ObjectMethods return false ObjectMethods tmp ObjectMethodsobj if i ! tmp.i return false if !d.equalstmp.d return false if s.length ! tmp.s.length return false Un sir este un obiect. Apeland sau equals se va verifica doar daca doua referinte indica acelasi obiect de aceea un ciclu este necesar pentru a parcurge toate elementele vectorului si ale compara. forint i 0i t MERGEFORMAT s.length i if s i equals tmp.s i return false return truegereram aici o reprezentare o obiectului sub forma de String public String toString I StringBuffer sb ne StringBuffer sb.appendi i, sb.appendd d, sb.appends forint i0i t MERGEFORMAT s.length i sb.append s i quot quot return sb.tostring public object clonerealizeaza o copie exacta o obiectului I ObjectMethods tmp ne ObjectMethods tmp.i i nu putem clona un obiect de tip Date, asa ca vom crea un nou obiect initializat cu valoarea lui d tmp.d ne Dated.getTime tmp.s ne Stringis.lengths forint i 0i s.lengthi I tmp.siis ne Stringsiis S return tmp S public void finalize I forint i0itrue System.out.printlna.equalsb false System.out.printlnb.equalsa false System.out.printlnb.equalsb true System.out.printlna System.out.printlnb b null ObjectMethods c ObjectMethodsa.clone System.out.printlna.equalsctrue System.out.printlnc.equalsatrue System.out.printlna System.out.printlnc modific obiectul c obiectul a nu se modifica!!!!! c.modify22 System.out.printlnNE cc System.out.println aa ObjectMethods m ne ObjectMethods m a m este referinta la a daca modific m se modifica si a !!!!!!! m.modify99 System.out.printlnm m System.out.printlna a System.out.printlnNE mm System.out.printlnNe aa S S t MERGEFORMAT xmp56GHPQ0167Hca1AaPQabstABDajUa5CJ08FGHdeyFaaD...
Download