| | |
| |
|
Објектно оријентирани концепти во Јава - Прв дел |
Споредување на објекти
Некаде во претходните написи споменав дека во некој од наредните написи ќе објасниме како работат стринговите (Strings) во Јава. Конкретно требаше да објаснам како стринговите можат да бидат споредени (компарирани) за еднаквост во Јава програм.
Начините на споредување за еднаквост е уште една многу битна разлика помеѓу примитивните податочни типови и објектите во Јава. Погледни го следниов изворен код:
1 int a = 5;
2 int b = 5;
3 if (a == b) System.out.println("'a' i 'b' se enakvi!");
4
5 Drvo d1 = new Drvo();
6 d1.visina = 5;
7 Drvo d2 = new Drvo();
koregirano na 11.02.2008: 8 d2.height = 5;
8 d2.visina = 5;
9 if (d1 == d2) System.out.println("'d1' i 'd2' se ednakvi!");
Примерот го открива различното однесување помеѓу примитивните податочни типови и објектите. Споредбата од линија 3 доаѓа до резултат дека „a“ и „b“ се навистина исти, од друга страна, без разлика на фактот дека висинате на двете дрва „d1“ и „d2“ се исти, во линијата број 9 тоа не е доволно за да објектите „d1“ и „d2“ резултираат со тоа дека се исти. За да две променливи кои содржат објекти бидат евалуирани како исти со користење на операторот „==“ и двете променливи мораат да покажуваат према еден ист објект! Во следниов пример променливите „d1“ и „d2“ ќе бидат евалуирани како исти:
1 Drvo d1 = new Drvo();
2 d1.visina = 5;
3 Drvo d2 = d1; // I dvete promenlivi referenciraat sprema isto Drvo
4 if (d1 == d2) System.out.println("'d1' i 'd2' se ednakvi!");
Но ваква форма на споредување и не е баш корисна, нели?
Знаеш дека Јава користи вградена класа наречена „String“ која ги претставува текстуалните низи од карактери. Горенаведениот проблем се појавува исто така кога сакаме да споредиме два стринга (Strings) за еднаквост. На пример, доколку сакаш да споредиш некој стринг кој е внесен од корисникот на програмот, со некоја лозинка за да би дозволил пристап до некој модул во програмот, сигурно ќе помислиш да ги споредиш лозинките на овој начин:
1 if (vnesenaLozinka == "tajna_lozinka") {
2 // Dozvoli pristap
3 } else {
4 System.out.println("Pristapot ne e dozvolen.");
5 }
Проблемот е тоа што, иако променливата „vnesenaLozinka“ ја содржи вредноста „tajna_lozinka“ сепак не е иста инстанца од класата String како вредноста со која се споредува, така да секогаш при евалуација на тој начин резултатот ќе биде неточен (False), односно пристапот ќе биде одбиен.
Решението е да се употреби методата „equals“ која е обезбедена од класата String наместо операторот „==“. Овој метод ти овозможува да споредиш два стринга за еднаквост во вистинска смисла на зборот. Еве едно примерче како би го искористиле „equals“ методот во погорниот пример:
1 if (vnesenaLozinka.equals("tajna_lozinka")) {
2 // Dozvoli pristap
3 } else {
4 System.out.println("Pristapot ne e dozvolen.");
5 }
Методот „equals“ е различен од другите споменати методи по тоа што овој метод прима влезен параметар. Наместо после името на методот „equals“ да дојдат празни загради „()“, овде помеѓу заградите имаме параметар од тип String. Како резултат овој метод враќа Boolean вредност (true или false) зависно од исходот од евалуацијата на вредностите.
Сите вградени класи од Јава го содржат методот „equals“ за да може објектот да се спореди со некој друг. Во вториот дел од овој напис ќе ти објаснам како да напишеш „equals“ метод за класите Drvo и Jabolknica.
|
|
|
|
|
|
| |
|
|
---|
JavaTM и Java-базираните ознаки се трговски марки или регистрирани трговски марки на Sun Microsystems, Inc. во САД и други држави. Java.com.mk никако не соработува со Sun Microsystems, Inc. Сите други трговски марки се сопственост на нивните сопственици. |
|