Tanácsok Java-hoz, PHP programozó(?)nak
Sziasztok!
Eddig csak PHP-val foglalkoztam. Amit tudok autodidakta módon szedtem magamra.
Most elkezdtem ismerkedni a Java nyelvvel is. A tanácsotokat szeretném kérni, hogy mit olvassak el? Hol kezdjem? Mik azok a buktatók, amikre mindenképpen figyeljek oda? Nem a "mindig deklaráljuk a változókat a program elején" típusú tanácsokra van szükségem.
Hogy hol is akadtam el?
Van egy PHP-ban írt űrlap generátorom. Arra gondoltam, gyakorlásként átírom Javara. PHP-ben a létrehozott elemeket egy asszociatív tömbben tárolom (a tömb kulcsai az elemek azonosítói).
Java-ban mivel válthatom ki ezt a megoldást? Mikor létrehozom a generátor objektumot (és a tárolót) még nem tudom, hogy hány elem lesz benne. nem tudom, hogy a még nem létező elemeknek mi lesz az azonosítója. Nézegettem a Map, Set, Vector tipusokat, de nem teljesen értem őket.
A tanácsokat előre is köszönöm.
tikuVoltam
■ Eddig csak PHP-val foglalkoztam. Amit tudok autodidakta módon szedtem magamra.
Most elkezdtem ismerkedni a Java nyelvvel is. A tanácsotokat szeretném kérni, hogy mit olvassak el? Hol kezdjem? Mik azok a buktatók, amikre mindenképpen figyeljek oda? Nem a "mindig deklaráljuk a változókat a program elején" típusú tanácsokra van szükségem.
Hogy hol is akadtam el?
Van egy PHP-ban írt űrlap generátorom. Arra gondoltam, gyakorlásként átírom Javara. PHP-ben a létrehozott elemeket egy asszociatív tömbben tárolom (a tömb kulcsai az elemek azonosítói).
Java-ban mivel válthatom ki ezt a megoldást? Mikor létrehozom a generátor objektumot (és a tárolót) még nem tudom, hogy hány elem lesz benne. nem tudom, hogy a még nem létező elemeknek mi lesz az azonosítója. Nézegettem a Map, Set, Vector tipusokat, de nem teljesen értem őket.
A tanácsokat előre is köszönöm.
tikuVoltam
Ajánlom "magamat"
Egyenlőre annyit, hogy a Map megvalósításai (pl. HashMap) állnak a PHP tömbjeihez legközelebb.
Sun tutorial
Sun tutorial
A konkret peldad eseteben egy Map megvalositast (jellemzoen HashMap) kene letrehozni, es dobalni bele az elemeket.
Javaslom, hogy eloszor az alapokkal legyel tisztaban - a nyelv tulajdonsagai, a java.lang es java.util csomag - aztan lehet tovabb kacsingatni mas teruletek fele (swing, servlet/jsp, ejb, spring, stb.).
Ket tipikus hiba:
- A Stringeket ne + operatorral konkatenald ossze, ha nem a StringBuilder osztallyal (StringBuffer is hasznalhato, csak ez utobbi szinkronizalt, es emaitt lassabb).
- Vector helyett ArrayList hasznald (ugyanazt tudja a ketto, csak a Vektor szinkronizalt, es emaitt lassabb).
Hogy?
De ha tipikus hibákról van szó: stringeket ne == -vel hasolíts össze, hanem equals-szal.
Teljesítmény probléma lehet
Nem kell megijedni, csak érdemes figyelembevenni, hogy a + operátornak mi a háttérköltsége.
Pl egy ilyen esetben nagyon nem szerencsés a + operátor:
A string immutable
Ez egyedi sztringműveleteknél nem jelent gyakorlati problémát, tehát egy-két pluszos összeadással nincs semmi gond. A probléma akkor jön elő nagyon, ha pl. az s += x; utasítás egy ciklus magjában van, ami mondjuk lefut 1000-szer. Ekkor 1000 db egyre hosszabb sztring objektumod lesz, amikre az utolsó kivételével nem hivatkozik senki. Tehát a memóriából előbb-utóbb kitakarítja őket a gc, de addig helyet foglalnak, és persze a gc-t sem érdemes terhelni, ha nem muszáj.
Ehhez képest a StringBuilder az olyan sztringként fogható fel, aminek változtatható az értéke, hozzáfűzéskor nem jön létre új objektum, csak a meglévő bővül.
Köszi
Tanulni, tanulni, tanulni...
Az ajánlott kulcsszavak sorrendben az alábbiak: Servlet, JSP, JSTL, JSF
Sok türelmet és sikert :)
UI: a String-eket össze lehet adni, és a PHP tömbkezelését ne is keresd sehol, ez a jóság csak PHP-ben van. Amúgy meg HashMap.