Miskolci Egyetem Általános Informatikai Tanszák
Java II II. A Java programozá programozási nyelv alapelemei Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2009. 02. 09.
Ficsor Lajos
Java II.: Alapelemek
JAVA2 /
1
A Java formalizmusa • A C, illetve az annak bıvítéseként definiált C++ szintaktikájával nagyon rokon. • A továbbiakban az alapelemeket a C nyelvvel összehasonlítva ismertetjük. • A elıször csak a Java nyelv legegyszerőbb elemeivel foglalkozunk. • A leírás a legtöbb esetben nem teljes, de a C nyelv ismeretében egyszerő programok írásához elegendı. • A hiányzó információkat a késıbbiekben pótoljuk. Ficsor Lajos
Java II.: Alapelemek
JAVA2 /
2
A Java program • A Java program osztályok halmaza. Végrehajtható kód csak osztály metódusában fordulhat elı. • Egy alkalmazás belépési pontja egy olyan osztály, amelyben van egy public static minısítéső main nevő metódus. • A fenti fogalmak (osztály, metódus, minısítık) pontos jelentésére a késıbbiekben kitérünk.
Ficsor Lajos
Ficsor Lajos
Java II.: Alapelemek
JAVA2 /
3
Java2 / 1
Miskolci Egyetem Általános Informatikai Tanszák
Azonosí Azonosítók • A Java a Unicode karakterkészletet használja, tehát akár ékezetes azonosítókat is használhatunk. • Az azonosító betővel kezdıdı és betővel vagy számmal folytatódó karaktersorozat. – – – – –
Az _ és a $ is a betők közé sorolandó. A betők bármelyik karakterkészletbıl származhatnak. Az azonosító hossza tetszıleges. A JAVA is kis- és nagybető érzékeny (case sensitive). Kulcsszavak, valamint a const, goto, null, true, false szavak nem lehetnek azonosítók. Ficsor Lajos
Java II.: Alapelemek
JAVA2 /
4
JAVA2 /
5
Megjegyzé Megjegyzések • Mint a C-ben: /* Szöveg */
• Egysoros: // Innentıl a sor végéig komment
• Dokumentációs /**
Tetszıleges szöveg*/
A javadoc segédprogram feldolgozza.
Ficsor Lajos
Java II.: Alapelemek
Egyszerő Egyszerő típusok • Hasonlóak, mint C-ben, de pontosan definiált helyfoglalással és ábrázolási móddal • Nincs unsigned minısítı • Konstans változó final minısítıvel deklarálható (a const helyett).
Ficsor Lajos
Ficsor Lajos
Java II.: Alapelemek
JAVA2 /
6
Java2 / 2
Miskolci Egyetem Általános Informatikai Tanszák
Egyszerő Egyszerő típusok tá táblá blázata Típusnév boolean
Jelentés Logikai típus (true vagy false értékkel)
char
16 bites Unicode karakter
byte
8 bites elıjeles egész
short
16 bites elıjeles egész
int
32 bites elıjeles egész
long
64 bites elıjeles egész
float
32 bites lebegıpontos szám (IEEE 754 szerint)
double
64 bites lebegıpontos szám (IEEE 754 szerint) Ficsor Lajos
Java II.: Alapelemek
JAVA2 /
7
Literá Literálok (konstansok) • Logikai értékek: true vagy false • A C-vel teljesen egyezı módon használandók: – – – –
Egész konstans Lebegıpontos konstans Karakter konstans (az escape szekvenciák is!) Szöveg konstans (csak Unicode szöveget is tartalmazhat)
• A szöveg konstanst a fordító automatikusan String típusúként kezeli (magyarázat majd késıbb). Ficsor Lajos
Java II.: Alapelemek
JAVA2 /
8
Loká Lokális vá változó ltozó haszná használata 1. • Definíciója csak metóduson belül. • Nincs globális változó! • Formája mint a C-ben, beleértve a kezdıértékadást is. • Egyszerő típusú lokális változó definíciója egyben helyfoglalást is jelent.
Ficsor Lajos
Ficsor Lajos
Java II.: Alapelemek
JAVA2 /
9
Java2 / 3
Miskolci Egyetem Általános Informatikai Tanszák
Loká Lokális vá változó ltozó haszná használata 2. Különbségek: • Változó definíció egy metóduson belül bárhol lehet (nem csak blokk elején). • A definíció tehát Java-ban végrehajtható utasítás! – Következmény: az inicializáló kifejezés (ha van) tetszıleges kifejezés lehet, csak a kifejezés értékének kell a definíció típusával kompatibilisnek lennie. Ficsor Lajos
Java II.: Alapelemek
JAVA2 /
10
Loká Lokális vá változó ltozó haszná használata 3. • Természetesen a változó csak a definíció után használható. • A definíció hatásköre a definíciót tartalmazó blokk végéig tart. – Kivétel: a for utasításban foglalt elsı kifejezésben található definíció érvényességi köre a ciklusmag!
Ficsor Lajos
Java II.: Alapelemek
JAVA2 /
11
Loká Lokális vá változó ltozó haszná használata 4. • Példa a kivételre: for (int index=1; index<8; index++) { System.out.println(index); index byte i = index+65; i System.out.println(i); }
• i és index egyaránt lokális a ciklusmagra nézve (tehát azon kívül nem használható!) Ficsor Lajos
Ficsor Lajos
Java II.: Alapelemek
JAVA2 /
12
Java2 / 4
Miskolci Egyetem Általános Informatikai Tanszák
Loká Lokális vá változó ltozó haszná használata 5. • Mivel a i definíciója ténylegesen a ciklusmag belsejében van, így a ciklusmag minden végrehajtásakor létrejön, a végén pedig megszőnik. • Az index az ıt tartalmazó kifejezés kiértékelésekor létrejön, és a ciklusból való kilépéskor megszőnik.
Ficsor Lajos
Java II.: Alapelemek
JAVA2 /
13
Loká Lokális vá változó ltozó haszná használata 6. • Inicializálatlan lokális változó értéke határozatlan! – Inicializálatlan változó használatát általában a fordító felismeri, és hibajelzéssel "jutalmazza".
Figyelem! • a késıbbiekben "osztály változókról" és "példány változókról" (adattagokról) is lesz szó!
Ficsor Lajos
Java II.: Alapelemek
JAVA2 /
14
Egydimenzó Egydimenzós tömb Definíciója eltér a C szintaktikától. Két lépés (amely egy utasításba összevonható): 1. Tömb típus deklarációja típusnév azonosító[]; vagy típusnév [] azonosító;
2. Helyfoglalás a tömb elemeinek: azonosító = new típusnév[elemek száma]
Ficsor Lajos
Ficsor Lajos
Java II.: Alapelemek
JAVA2 /
15
Java2 / 5
Miskolci Egyetem Általános Informatikai Tanszák
Egydimenzó Egydimenzós tömb (folyt.) • A két lépés egy utasításba összevonva: típusnév azonosító [] = new típusnév[elemek száma] • Az elemekre való hivatkozás már ugyanaz, mint a C nyelvben. • A Java-ban többdimenziós tömbök is definiálhatók, amelyek nem feltétlenül „négyzetesek”. • Bár nincs elıre definiált osztálya, de osztályhoz tartozóként kezeli a Java. Ficsor Lajos
Java II.: Alapelemek
JAVA2 /
16
Egydimenzó Egydimenzós tömb (folyt.) • Minden tömbhöz tartozik egy length konstans, amely az elemek számát adja meg. • Használata: tömbazonosító.lenght
Ficsor Lajos
Java II.: Alapelemek
JAVA2 /
17
Alaptí Alaptípusú pusú tömb Példa: int jegyek[]; // Ez csak egy tömb // típus létrehozása jegyek = new int[100]; // Helyfoglalás // 100 elemnek jegyek[16] = 1; // Elem értékének // beállítása
Az indexelés itt is 0-tól kezdıdik. Különbség: az érvénytelen index kivételt vált ki! Megjegyzés: A fentieket a késıbbiekben még pontosítjuk! Ficsor Lajos
Ficsor Lajos
Java II.: Alapelemek
JAVA2 /
18
Java2 / 6
Miskolci Egyetem Általános Informatikai Tanszák
Operá Operátorok • A C majdnem minden operátorát ismeri a Java (kivéve a pointerhez kapcsolódókat) • Az operátorok jelentése az egyszerő típusokra ugyanaz. Különbségek: • négy új operátor (>>>, >>>=, instanceof, new) • nincs , (vesszı) operátor • A kifejezések kiértékelési sorrendje meghatározott. Ficsor Lajos
Java II.: Alapelemek
JAVA2 /
19
Kifejezé Kifejezések kié kiérté rtékelé kelési sorrendje A kifejezések kiértékelési sorrendjét meghatározza: 1. Zárójelezés 2. Operandusok prioritása 3. Azonos prioritás esetén balról-jobbra szabály, kivétel az értékadás, amely jobbról-balra értékelıdik ki. A kifejezésekben a metódushívások ("függvény hívások") sorrendje is a kiértékelés sorrendjét követi. Ficsor Lajos
Java II.: Alapelemek
JAVA2 /
20
JAVA2 /
21
Utasí Utasítás, blokk Utasítás lehet: – kifejezés utasítás – deklarációs utasítás.
Az utasításokat pontosvesszı zárja. Kifejezés utasítás csak a következı lehet: – értékadás, – ++ és -- operátorokkal képzett kifejezések, – metódushívás, – példányosítás. Ficsor Lajos
Ficsor Lajos
Java II.: Alapelemek
Java2 / 7
Miskolci Egyetem Általános Informatikai Tanszák
Utasí Utasítás, blokk (folyt.) • A deklarációs és kifejezés utasítások tetszıleges sorrendben követhetik egymást. • Az utasítások sorozata {} jelek közé zárva a blokk. • Utasítás helyére mindig írható blokk.
Ficsor Lajos
Java II.: Alapelemek
JAVA2 /
22
Vezé Vezérlı rlı utasí utasítások Lényegében megegyeznek a C utasításaival. Különbségek: • Az if, while, do utasításokban a feltétel csak logikai kifejezés lehet. • A for utasításban a második kifejezés csak logikai kifejezés lehet • A switch utasításban a szelektor csak egész kifejezés lehet. • Nincs goto utasítás. Ficsor Lajos
Ficsor Lajos
Java II.: Alapelemek
JAVA2 /
23
Java2 / 8