Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY Datové typy a operátory Základní programové konstrukce I Datové typy a operátory Základní programové konstrukce I
Datové typy v Javě Primitivní datové typy –celá čísla –desetinná čísla –znak –logická hodnota (ano/ne, platí/neplatí, pravda/nepravda) Referenční datové typy –třída (class) –rozhraní (interface) –výčtový typ (enum) –pole
Primitivní datové typy celá čísla byte (-2 7 až ) short (-2 15 až ) int (-2 31 až ) long (-2 63 až ) desetinná čísla float (max 3.4*10 38 ) double (max 1.8* ) logická hodnota boolean konstanty true a false znak char 16-bitové, UNICODE
Konstanty primitivních datových typů celočíselná konstanta je typu int xf (číslo v šestnáctkové soustavě) (15) 017 (číslo v osmičkové soustavě) (15) reálná konstanta je typu double e20 (semilogaritmický tvar, = 2.5 x )
Konstanty primitivních datových typů znaky 'a' 'B' \u010D (č) \u0000 (prázdný znak) logická hodnota true false
Operátory pro primitivní datové typy přiřazení = aritmetické +, -,*, /, % +=, -=, *=, /=, %= ++, -- relační ==, !=,, = logické&&, ||, !, &, | bitové operátory ternární/podmíněný operátor ?: operátor přetypování (cílový_typ)
Operátor přiřazení int cislo = 15; double celeCislo = 2.5; celeCislo = celeCislo + cislo; char znak = 'a'; znak = 'F'; double stavMehoUctu = mujUcet.getStav();
Aritmetické operátory +=x += yx = x + y −=x −= yx = x − y /=x /= yx = x / y *=x *= yx = x * y %=x %= y x = x % y ++x++ ++x x = x + 1 −−x−− −−x x = x − 1 + sčítání - odčítání * násobení / dělení % modulo
Dělení double podil = 5/2;(2) double podil = 5d/2;(2.5) celočíselné dělení nulou – vznikne výjimka (ArithmeticException) reálné dělení nulou – výsledkem je jedna z konstant Double.POSITIVE_INFINITY nebo Double.NEGATIVE_INFINITY
Jaký je výsledek ? System.out.println( L); l
Relační operátory == rovná se != nerovná se != nerovná se < menší než < menší než > větší než > větší než <= menší nebo rovno <= menší nebo rovno >= větší nebo rovno >= větší nebo rovno
Logické operátory (cislo1 > 5) && (cislo2 !=0) logické operátory jsou definovány pouze pro typ boolean (často se používají v kombinaci s výsledky relačních operátorů) && logický součin || logický součet ! negace
Přetypování Přetypování existuje nezávisle pro primitivní i referenční typy Přetypování čísel na delší typ (neztratí se žádná informace) probíhá automaticky. byte short int long float double int maleCislo = 2; long velkeCislo = maleCislo; double cislo = 5; přetypování int na long přetypování int na double
Operátor přetypování Přetypování čísel na kratší typ musím uvést double desetineCislo = 5.0; int celeCislo = desetineCislo; ☹ –překladač nás upozorní na nekompatibilitu typů a program nepřeloží. int celeCislo = (int)desetineCislo; –když uvedeme operátor přetypování, program lze přeložit, bude odseknuta desetinná část čísla.
Kulaté závorky kulaté závorky ( ) se v Javě používají na následujících místech: –ve složitějších výrazech pro vyjádření priority operací 3 x (3 x 5) x (5 + 6) –jako operátor přetypování, –v deklaraci metod pro uzavření seznamu formálních parametrů, –při volání metod pro uvedení seznamu skutečných parametrů, –v příkazech selekce a iterace pro uvedení podmínky –při odchytávání výjimek
Primitivní a referenční datové typy instance třídy String instance třídy Student instance třídy String textStringreference pocetint5 prvniZnakchar‘a’ prumerdouble novyStudentStudentreference chyboveHlaseniStringreference
Referenční typy - konstanty konstanta null –při deklaraci referenčního typu –NullPointerException při volání metody řetězce "ahoj"
Ref. typy – operátor přiřazení textreference cislo15 cislo25 text2reference instance třídy String s obsahem "ahoj" identifikátor obsah String text = "ahoj"; int cislo1 = 5; int cislo2 = cislo1; String text2 = text;
Ref. typy – relační operátory == !=porovnání odkazů instanceof Integer cislo1 = new Integer(10);// vytvoření instance Integer cislo2 = cislo1;// zkopírování odkazu na instanci Integer cislo3 = new Integer(10);// vytvoření druhé instance System.out.print(cislo1 == cislo2); //výsledek je true System.out.print(cislo1 == cislo3); //výsledek je false System.out.print(cislo1.equals(cislo3));//výsledek je true
Řetězcový operátor + "Ahoj" + "Tome" "AhojTome" int cislo = 5; "Výsledek je " + cislo +7; "Výsledek je 57" "Výsledek je " + (cislo +7); "Výsledek je 12"
Základní programové konstrukce Sekvence (posloupnost) příkazů Selekce (větvení) Iterace (cyklus, opakování)
Bloky příkazů - sekvence blok příkazů je skupina příkazů uzavřená mezi složené závorky { } příkazy jsou prováděny postupně, podle pořadí uvedení metoda je vždy tvořena blokem příkazů, který může obsahovat další bloky public Kruh() { prumer = 30; xPozice = 20; yPozice = 60; barva = "modra"; kresli(); }
Selekce (větvení, rozhodování) Jestliže bude hezky, půjdeme do zoo, jinak si pustíme film. Když si uklidíš, půjdeš ven. Když nebudeš zlobit, dostaneš čokoládu. if switch
Příkaz if - syntaxe if (podmínka) { příkaz1; } else { příkaz2; } if (podmínka) { příkaz; }
Příkaz if - diagram
Selekce – příklad 1 public boolean vyber (double castka) { if (stav < castka) { return false; } else { stav = stav – castka; return true; }
Selekce – příklad 2 public void porovnavani(int cislo1, int cislo2) { if (cislo1 > cislo2) { System.out.println("Prvni cislo je vetsi"); } else { if (cislo1 == cislo2) { System.out.println("Obe cisla jsou stejna."); } else { System.out.println("Druhe cislo je vetsi"); }
Příkaz switch - syntaxe switch (výraz) { case konstanta1: příkaz1; break; case konstanta2: příkaz2; break; case konstanta3: příkaz3; break; case konstanta4: příkaz4; break; //... default: příkaz; };
Příkaz switch - diagram
Použité zdroje a literatura Developer Resources for Java Technology [online]. c2010 [cit ]. Dostupné z WWW: PAVLÍČKOVÁ, Jarmila; PAVLÍČEK, Luboš. Úvod do Javy. Praha : Nakladatelství Oeconomica, s. ISBN
Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY Tato prezentace byla vytvořena v rámci projektu OBZORY Autor: Ing. Jarmila Pavlíčková Předmět: Seminář Java Datum: 28. března 2010