Parancssori argumentumok Primitív típusok Operátorok Vezérlési szerkezetek Tömbök Ürmös Beáta, 2011
minden parancssorból indított Java programnak átadhatunk argumentumokat is ◦ a main függvényben: String[] args a parancssori argumentumokat tartalmazó tömb a program indításakor megadott argumentumokat az args tömb tartalmazza ◦ egyes elemeit indexeléssel érjük el ◦ Javában az indexelés 0-tól indul
int elsoArg; if (args.length > 0) { try { elsoArg = Integer.parseInt(args[0]); } catch (NumberFormatException e) { System.err.println("Argument must be an integer"); System.exit(1); } }
args.length ◦ az args tömb elemeinek számával tér vissza try{} és catch{} blokkok ◦ kivételkezelés (bővebben később…) args[0]: ◦ az args tömb első elemének elérése
Integer.parseInt(args[0]); ◦ az args tömb első elemét számmá alakítjuk (erre azért van szükség, mert a parancssori argumentumokat String-ként kapjuk meg, mi viszont egy int típusú változóban akarjuk eltárolni az értékét) ◦ általános alak:.parse*( ); Integer.parseInt(“5”); Double.parseDouble(“6.15”); stb. a program neve nem parancssori argumentum!
a stacken keletkeznek mindig érték szerint tárolódnak ◦ minden más referencia szerint csak előjeles típusok vannak (ellentétben a C- vel) ◦ Pl. int van, de unsigned int nincs 2 speciális típus: ◦ BigInteger: akármekkora egész szám ◦ BigDecimal: akármekkora fix pontos szám Példaprogram: PrimitivTipusok.java
objektumba csomagolják a primitív típust, és a heap-en tárolják Pl.: ◦ int a; ez nem objektum, hanem egyszerű változó! ◦ Integer a = new Integer(5); ez objektum!
Integer a = new Integer(5); Integer b = new Integer(3); Ebben az esetben: a = b; ennek hatására „a” ugyanoda mutat, ahova „b” a = b.clone(); „b” értéke az „a”-ba másolódik Míg ha „a” és „b” egyszerű int típusú változók: a = b ; értékadás
n lépéssel toljuk a biteket balra 2 n-edik hatványával szorozzuk az eredeti decimális számot ◦ mindig 0-val töltődnek fel az átléptetett helyek Pl.: 16 << 2 (decimális 64)
n lépéssel toljuk a biteket jobbra 2 n- edik hatványával osztjuk az eredeti decimális számot ◦ mindig az előjelbittel töltődnek fel az átléptetett helyek Pl.: 16 >> 2 (decimális 4)
n lépéssel toljuk a biteket jobbra ◦ mindig 0-val töltődnek fel az átléptetett helyek pozitív számok esetén ugyanaz, mint az előjeles léptetés negatív számok esetén furcsa eredményt ad ◦ Pl. -16 >>> 2 decimális
int a = 5; int x; x = ++a; x = a++; Prefix operátorként: x értéke 6 lesz Postfix operátorként: x értéke 5 lesz, és az értékadás után növelődik ‘a’
double c; c= 5/2; c = ((double)5)/2; osztályok között is lehet típuskonverzió Ennek az eredménye: 2.0 Ennek az eredménye: 2.5
Operatorok.java
minden C-ben megismert vezérlési szerkezetet használhatunk Java-ban is ◦ goto van, de ne használjuk (ahogy C-ben sem)
for (int i = 0; i < 5; i++){ … } több ciklusváltozó/több feltétel esetén vesszővel választom el őket Példaprogram: Haromszog.java Deklarálhatom itt is, de ez a változó csak a cikluson belül él!
pub könyvtár: 3. gyakorlathoz tartozó feladatok.txt-ben
Számítsd ki a parancssoron kapott két időpont (óra perc óra perc) között eltelt időt és írasd ki a konzolra (óra perc formában). Ellenőrizd, adott-e meg a felhasználó parancssori argumentumot! (Ha nem, akkor tájékoztasd, hogy mit és milyen formában várja a program.) Szerda éjfélig küldhető be!
Java-ban a tömbök is objektumok ◦ new kulcsszóval kell őket létrehozni Pl.: ◦ int[] egeszek= new int[10]; ◦ double valosak[] = new double[5]; ◦ Alma[] almaskosar = new Alma[8]; Az Alma egy saját, általunk létrehozott típus.
minden tömbnek van egy csak olvasható adattagja: length ◦ a tömb hosszát (elemszámát) adja vissza ◦ pl.: almaskosar.length indexelés: mindig 0-tól kezdődik és n-1-ig tart int szamok[] = new int[10]; szamok[10] = 10; szamok[9] = 10; Helytelen! Helyes!
több módon is lehetséges: ◦ int egeszek[] = {1,2,3}; ◦ int[] egeszekMasolat= egeszek; többdimenziós tömböt is létrehozhatunk, hasonlóan az egydimenzióshoz: ◦ int[][] ketdim= { {1,1,1}, {2,3,4} }; ◦ int[][][] haromdim= { {1,2,3}, {4,5,6}, {7,8,9} }; ◦ int[][][] haromdimMasodik= new int[2][3][5]; ◦ int [][] masikTomb = ketdim; ugyanolyan értékeket vesz fel, mint a „ketdim” nevű tömb
DoubleTomb.java (pub, 04-es mappa) Tomb.java (honlapom)
Ajánlott linkek: Primitív típusok: dbolts/datatypes.html dbolts/datatypes.html rt1/Java/Chapter02/primitives.html rt1/Java/Chapter02/primitives.html Operátorok: dbolts/opsummary.html dbolts/opsummary.html Parancssori argumentumok: vironment/cmdLineArgs.html vironment/cmdLineArgs.html