UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. gyakorlat
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Primitív típusok Típus neveÉrtékAlap értékFoglalt tárIntervallum byteElőjeles egész08 bit-128 – 127 shortElőjeles egész016 bit – intElőjeles egész032 bit longElőjeles egész064 bit floatIEEE 754 lebegőpontos bit+/-1.4E /-3.40E+38, +/-infinity, +/-0, NaN doubleIEEE 754 lebegőpontos bit+/-4.9E /-1.8E+308, +/-infinity, +/-0, NaN charUnicode\u bit\u \uFFFF booleantrue, falsefalse1 bit (32 bitből) true, false
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Primitív típusok jellemzői Stack-en jönnek létre Mindig érték szerint tárolódnak Minden más (objektumok) referencia szerint Csak előjeles típusok vannak Pl. nincs unsigned int, csak int Speciális osztályok: BigInteger – Bármekkora egész tárolása BigDecimal – Bármekkora szám tárolása Példaprogram: PrimitivTipusok.java (pub)
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Wrapper osztályok Minden primitív típust „becsomagolhatunk” objektummá Wrapper osztályok segítségével primitív típusokat objektumként tudjuk kezelni, heap-en lesznek tárolva Implicit konverzió primitív és Wrapper között Minden primitív típus rendelkezik wrapperrel: int a; //primitív típus, stack-en Integer a = new Integer(3); //Objektum, heap
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Operátorok Értékadás Primitív típusoknál értékmásolás Objektumoknál referenciamásolás! Tényleges másolás a clone() metódussal
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Operátorok Értékadás Integer a = new Integer(5); Integer b = new Integer(8); a = b Az „a” ugyanoda mutat, mint a „b” a = b.clone() A „b” értéke lemásolódik, és erre mutató referencia lesz „a” értéke int a = 5; int b = 8; a = b Értékadás, „a” értéke „b” értéke lesz
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Operátorok Unáris aritmetikai: Előjelváltás (+, -) Inkrementálás/dekrementálás (++, --) Bináris aritmetikai: Összeadás (+), kivonás (-), szorzás (*), osztás (/), maradékképzés (%)
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Operátorok Bitműveletek Bitenkénti és (&), Bitenkénti vagy ( | ), Kizáró vagy (^), Komplementer képzés (~) &=, |=, ^= 3 operandusú if-else (? : ) feltetel ? Muvelet_ha_igaz : muvelet_ha_hamis; Értékadás, összevont értékadás (balhoz a jobb oldalit) =, +=, -=, *=, /=
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Operátorok Logikai És (&&), Vagy ( || ), Negálás ( ! ) Csak boolean értékekre használható! Összetett kifejezések addig értékelődnek ki, míg egyértelműen nem derül ki a kifejezés értéke: lusta kiértékelés Relációk: !=, ==, >=, Logikai értékkel térnek vissza Primitív típusoknál értéket hasonlít, objektumoknál referenciát! (Majd az equals() metódust használhatjuk összehasonlításra objektumoknál)
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Operátorok Bitléptető Balra léptetés (<<) : 2 n-edik hatványával szorzás Jobbra léptetés (>>) : 2 n-edik hatványával osztás Vessző csak for ciklusban, vagy adott típusból több változó deklarálásakor használható Típuskonverzió: (tipus) ertek Primitívek között korlátozás nélkül engedélyezett Objektumok között csak az öröklődési fán belül! Pl. double c; c = 5/2//c értéke 2.0 lesz c = ( (double) 5 / 2);//c értéke 2.5 lesz
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Inkrementálás/dekrementálás int a = 5; int b = ++a; //prefix operátor „a” növelése, majd értékadás (b értéke 6) int c = a++;//postfix operátor „c” értéke 6 lesz. Az értékadás „után” növelődik „a” értéke, ami 7 lesz. Ugyanez igaz a „--a” és az „a--” operátoroknál is Példaprogram: operatorok.java (pub)
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS String primitív típussá és vissza alakítása Primitív típussá alakítás során az általános alak: Tipus.parseTipus(’’string’’); int a = Integer.parseInt(„5”); double b = Double.parseDouble(„6.15”); Primitív típusból String: String str = String.valueOf(a);//str = „5”
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Vezérlési szerkezetek Minden C-beli vezérlési szerkezet támogatott Kivéve a goto! A kulcsszó létezik, de nincs implementálva Soha ne használjuk! if, for, while, switch…
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Feltételes szerkezetek
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Ciklusok
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS 1. Feladat Írjuk ki a parancssori paramétereket az alábbi módon: Az első sorba az első A másodikba az első kettő A harmadikba az első három stb. kerüljön, szóközzel elválasztva. (nyílván a paraméterek számának megfelelően)
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS 2. Feladat 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)! Ügyelj az alábbiakra: Bemenő paraméterek száma Az órák 0-23 intervallumba kell, hogy essenek A percek 0-59 intervallumba kell, hogy essenek
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS 3. Feladat A parancssori paraméterek alapján döntsd el, hogy egy a bemenő számok: számtani (a n = a 1 + (n – 1) * d ) mértani (a n = a 1 * q n – 1 ) egyik sem sorozatot alkotnak-e. Feltehetjük, hogy mindegyik egész szám, és legalább 3 db paraméterünk van.