3. Gyakorlat – Ismerkedés a Java nyelvvel
Parancssori argumentumok
Minden Java programnak adhatunk indításkor paraméterek, ezeket a program egy tömbben tárolja. public static void main( String[] args ) Az args tömb tárolja a parancssori paramétereket sztring formátumban, melyeket a tömb megfelelő indexelésével elérhetjük. C-vel ellentétben a 0-dik indexen lévő argumentum nem a program neve! Paramétereknek a darabszámát könnyedén megállapíthatjuk: args.length, ami egy int értéket ad vissza.
Parancssori argumentumok
A parancssori paramétereket minden esetben String-ként kapjuk meg, ezért ha számokkal akarunk dolgozni, át kell őket alakítani. ( Ez csak akkor fog működni, ha eleve számokat adtunk át paramétereknek. )
.parse*( ”String” ); Ahol a lehet Integer, Double, stb… * = Int, Double, Float, Byte …stb. Példa: Integer.parseInt( ”12” ); Mind benne van a Java API-ban:
http://java.sun.com/javase/6/docs/api/
Típusok
http://java.sun.com/docs/books/tutorial/java/nutsandb olts/datatypes.html
Típusok
A primitív típusok mindig érték szerint tárolódnak ( minden más referencia szerint ). Csak előjeles típusok vannak, nincsen unsigned! Speciális típusokok: BigInteger: akármekkora egész szám BigDecimal: akármekkora fix pontos szám
Példa program: PrimitivTipusok.java
Wrapper osztályok
http://en.wikipedia.org/wiki/Primitive_wrapper_class Speciális osztályok, primitív típusok csomagoló osztályaik. Így a primitív típust objektumként tudjuk kezelni. Implicit konverzió wrapper osztály és primitív típus között. Az összes primitív típus rendelkezik csomagoló osztállyal.
Operátorok
Értékadás: primitív típusoknál mindig érték szerint történik objektumoknál mindig referencia másolás történik ( tényleges objektum másolás a .clone() metódussal történik ) Matematikai + - * / % Összevont += -= *= /= %= Egy operandusú + - ++ -Relációk == != < > <= >= primitív típusoknál érték szerint hasonlít objektumoknál referencia összehasonlítás ( objektum összehasonlításra a .equals() metódus használatos )
Operátorok
Bitműveletek & | ^ (xor) ~ (not) Értékadással összevont &= |= ^= Biteltolás << >> >>> (unsigned) Értékadással összevont <<= >>= >>>= Logikai && || ! Ezek csak boolean értékre használhatóak! Összetett kifejezés csak addig értékelődik ki, amíg ki nem derül egyértelműen az értéke pl: if ( valt01 == 0 || valt02 == 1 ), ha a valt01 értéke 0, akkor a második vizsgálat már lesz végrehajtva, mert az egész formula értéke igaz lett.
Operátorok
Háromoperandusú if-else: boolean-exp ? val0 : val1 Vessző: , csak a for ciklusban alkalmazható! Típuskonverzió: (type)value Primitív típusok között használható korlátok nélkül (kivéve a boolean-t). Osztályok között csak egy öröklődési fán belül engedélyezett. Nincs sizeof() operátor
Példa program: Operatorok.java
Vezérlési szerkezetek
A C-ben használt vezérlési szerkezetek használhatóak Java-ban. Van goto, de ne használjuk!
If - else
Switch
While – Do While - For
Vezérlési szerkezet példa
Haromszog.java
Tömbök
A tömbök egynél több értéket is tárolhatnak, az elemek száma rögzített. A tömb tehát adott számú, azonos típusú elemet tartalmazó adattípus. A tömb indexe 0-val kezdődik. Java nyelven a tömböket dinamikusan, a new operátoral lehet létrehozni, a tömbök mérete lekérdezhető a length adatmezővel. A Java teljes körű indexhatár-ellenőrzést végez, kivétellel jelzi, ha az index kisebb, mint 0, vagy nagyobb vagy egyenlő, mint a length mező értéke
Tömbök – 1D
Egyetlen kiterjedéssel rendelkező tömböket szokás vektoroknak nevezni. 1D-s tömbHIVATKOZÁS definíciója: típus tömbnév[ ]; típus[ ] tömbnév; A Java nyelvben a tömböt futás során a new operátorral hozzuk létre. new elemtípus[ méret ] A méret csak egész típus lehet és nem lehet negatív. A tömb mérete nem haladhatja meg az Integer.MAX_VALUE értéket. Pl: int[ ] x = new int[ 5 ]; Mivel a tömb indexe 0-val kezdődik, ezért hibás a deklarációban beírt értékre, mint indexre hivatkozni: x[ 5 ] = 1; //hibás!!!
Tömbök – 1D
A Java nyelv lehetővé teszi, hogy a tömböket a definiálás során konstans értékekkel inicializáljuk. Ilyenkor a tömböt a fordító hozza létre. típus[ ] tömbnév = { vesszővel tagolt konstansok }; Pl: int[ ] x = { 1, 2, 3, 4, 5 };
Többdimenziós tömbök
Tömbhivatkozás definíciója: típus[ ][ ]…[ ] tömbnév; típus tömbnév[ ][ ]…[ ]; Tömb létrehozása ( 2D-s ): new típus[ méret1 ][ méret2 ]; Konstans értékes inicializálás: int matrix[ ][ ] = { { 1, 2 }, { 3, 4 } }; 2D-s tömb példa: int[ ][ ] matrix = new int[ 3 ][ 3 ];
Tömbös példa program
Tombok.java