Pro Java jednotn univerzln jazyk ne vak vhodn

  • Slides: 27
Download presentation
Proč Java – jednotný, univerzální jazyk ( ne však vhodný pro cokoli ) –

Proč Java – jednotný, univerzální jazyk ( ne však vhodný pro cokoli ) – definovaný specifikací: je to především norma, pak i produkty – rozsáhlý, otevřený, rozvíjející se, s návaznými technologiemi – právně chráněný – normotvorný - zavádí řadu užitečných norem, uzancí a přístupů – expanzivní, od května 1995 vykázal nevídaný rozmach – velmi efektivní při tvorbě software – spolehlivý, robustní, velmi dobře dokumentovaný – portabilní, ( Windows / Linux / Solaris. . . ) – bezpečný – deterministický - úlohy končí či havarují určitelným způsobem – silně objektový – avšak hybridní - obsahuje i primitivní typy – síťový – Internetový, internacionální a návazný na nativní platformu – multithreadový - více vláken (tj. úkolů) běží [ jakoby ] současně – interpretovaný - s adaptací pro platformu ( JIT ) – vhodný pro úvod do objektového programování – zdarma C 00 1

Java & IDE • Tvůrcem a vlastníkem práv je fa. Sun Microsystems a Oracle,

Java & IDE • Tvůrcem a vlastníkem práv je fa. Sun Microsystems a Oracle, která vydává Java. SE, Java. EE, Java. ME a další produkty po verzích - zdarma stáhnutelné z: http: //java. oracle. com/ resp. http: //www. netbeans. org 1. 0. 2 – 1995, 1. 1 – delegační model událostí, 1. 2 – JFC, 1. 3, 1. 4 - assert 1. 5 - 2004: rozšíření jazyka: for, enum, autoboxing, generika, anotace 1. 6 - 2006: rozšíření API, 1. 7 - 2011: rozšíření čísla, switch, try, catch, diamond 1. 8 - 2014: funkcionální interfejsy, ->, : : , default, lambda výrazy jre - Java Runtime Environment ( bez vývojových prostředků ) obsahuje JVM ale nikoli IDE, databázi či aplikační server. • S Javou lze pracovat velmi nepohodlně řádkově s programy v jdk 1. 8**/bin/ javac A. java B. java. . . kompilace zdrojů. java na. class java A běh aplikace dané třídy appletviewer A. html tester apletů javadoc … tvorba dokumentace, tzv. docletů v html či velmi pohodlně a bezpečně ve vyspělých IDE: Netbeans – 8. 0 April 2014 Eclipse - IBM, JBuilder - Borland, Intelli. JIDEA - Jet. Brains. . . C 00 2

Podpora Javy Sun Microsystems velmi podporuje Javu tím, že vydává: • různé softwarové svazky

Podpora Javy Sun Microsystems velmi podporuje Javu tím, že vydává: • různé softwarové svazky – ke stažení a instalaci lze doporučit: http: //java. sun. com/javase/downloads/index. jsp • ke každé hlavní verzi dokumentaci ve formě html stránek. Ta obsahuje zejména popis API, který je radno připojit nerozzipovaný IDE. Viz: http: //java. sun. com/docs/ http: //download. oracle. com/javase/7/docs/ • tématické tutoriály: http: //java. sun. com/docs/books/tutorial/index. html http: //java. sun. com/docs/books/jls - Java specification 3 rd edition popisuje i verze >= 1. 5 Zakhour, S. et al. : Java 6 výukový kurz, Computer Press, Brno, 2007, s. 534, ISBN 978 -80 -251 -1575 -6 http: //www. saeedsh. com/resources/Thinking%20 in%20 Java%204 th%20 Ed. pdf C 00 3

Dodržujte jmenné konvence Prosté jméno je posloupnost znaků UNICODE: písmen, $ _ číslic jež

Dodržujte jmenné konvence Prosté jméno je posloupnost znaků UNICODE: písmen, $ _ číslic jež nezačíná číslicí a není klíčovým slovem. Jména volte mnemotechnická, nejlépe z kódu ASCII a anglická. S dolarem a podtržítkem šetřte : dolar se užívá v automatické generaci kódu, podtržítko ve víceslovných konstantách. Kvalifikované jméno obsahuje uvnitř také tečky. UJmen. Složených. ZVíceslov. Dodržujte. VelbloudíKonvenci. KvůliČitelnosti. package ( balíček ) - jen malá písmena, číslice a tečka, např. : projekt 1 projekt 2. util java. util. zip class ( třída ) - a její konstruktory - podstatné jméno začínající velkým písmenem, např. : String File. Input. Stream Bank. Account Rectangle 2 D. Double - pro vnořené či vnitřní třídy Třídy výjimek / chyb vyznačujte sufixem Exception / Error, např. : My. Special. Exception Common. Strange. Error C 00 4

Dodržujte jmenné konvence interface ( rozhraní ) - přídavné jméno začínající velkým písmenem, (

Dodržujte jmenné konvence interface ( rozhraní ) - přídavné jméno začínající velkým písmenem, ( což se přetěžko hledá a dodržuje ) např. : Comparable Serializable Cloneable Runnable Readable Iterable Auto. Closeable Scrolable method ( metoda ) - sloveso začínající malým písmenem, např. : reset( ) get. X( ) parse. Double( ) compare. To( ) vrací-li typ boolean, vhodný je prefix is nebo has is. Letter. Or. Digit( ) has. Next. Element( ) variable ( proměnná ) – podstatné jméno začínající malým písmenem: j counter total. Tax current. Frequency final variable ( konstanta ) a návěští: - jen velká písmena, číslice a podtržítka, např. : PI MAX_VALUE POINT_123 CYCLE 3 Bezejmenné jsou: hodnoty, výrazy, příkazy, objekty. C 00 5

Primitivní typy ( 8+1 ) Typ byte short int long char float Formát Obalové

Primitivní typy ( 8+1 ) Typ byte short int long char float Formát Obalové (wrap) třídy bit Celá čísla - dvojkový komplement se znaménkem 8 -128 … 127 Byte 16 -32768 … 32767 Short 32 -2147483648 … 2147483647 ( 2. 1 E+9 = 2. 1 miliard ) Integer 64 -9223372036854775808 … 9223372036854775807 Long ( 9. 2 E+18 = 9. 2 trilionů /EU = 9. 2 quintillions /US) 16 znaky Unicode 'u 0000‘ … 'uffff' ~ 0. . . 65535 Character jsou v přímém dvojkovém kódu bez znaménka "Reálná" čísla - dle normy IEEE 754 32 2 -149 … ( 2 -2 -23 )*2127, +/-0. 0 F, pos/neg Infinity, Na. N Float. MIN Float. MAX double 64 = +1. 4 E-45 = 3. 4028235 E+38 2 -1074… ( 2 -2 -52 )*21023, +/-0. 0, pos/neg Infinity, Na. N Double. MIN Double = +4. 9 E-324 Double. MAX = 1. 7976931348623157 E+308 boolean ? void C 00 true false pomocný prázdný typ Boolean Void 6

Konverze primitivních typů Primitivní typy jsou vzájemně nekompatibilní, ale jejich hodnoty lze převádět. rozšíření

Konverze primitivních typů Primitivní typy jsou vzájemně nekompatibilní, ale jejich hodnoty lze převádět. rozšíření ( widening ) znaménkový bit 0 je + zúžení ( narrowing ) 1 je - se rozšiřuje přetypování celočíselných hodnot odkrojí horní bity, znaménkem se stane nejvyšší z dolních short byte 8 16 char 16 32 int minimální aritmetika 64 long omezení do intervalu long / int IEEE 754 32 exp float (+127 ) 64 exp double IEEE 754 C 00 (+1023 ) 1 11 <MAX_VALUE, MIN_VALUE> 1 8 mantissa 23 mantissa 52 7

Integrální aritmetika int a long n/0 či n%0 způsobí Arithmetic. Exception Sudá čísla končí

Integrální aritmetika int a long n/0 či n%0 způsobí Arithmetic. Exception Sudá čísla končí n nulami a jsou dělitelná 2 n. Lichá čísla končí jedničkou. pro lichá n<0 : n/2 != n>>1 důsledek: -1>> == -1 7 000. . 0111 + znaménkový bit 2 1 000. . 0001 0 000. . 0000 -1 111. . 1111 011. . 1111 MAX_VALUE overflow 100. . 0000 MIN_VALUE -2 chybné výpočty 100. . 0001 MIN_VALUE+1 MAX+1 -> MIN k * MAX -> - k pro sudé k k * MAX -> MAX-k+1 pro liché k -3 -8 MIN-1 -> MAX 111. . 1101 111. . 1000 MIN * k -> 0 pro sudé k MIN * k -> MIN pro liché k - negace: -> true ~ inverze: 0 -> 1, 1 -> 0 - samonegace: - n = n MIN == - MIN MAX + MIN -> -1 -n= ~n+1 - inverze znaménka MIN / -1 -> MIN C 00 111. . 1110 111. . 1001 -7 MAX * MAX -> 1 000. . 0010 Hádanky: n&-n, n&=n-1, n^=n&-n, 8

Numerické literály • Obsahuje-li literál jen číslice a případně znaménko ukládá se jako int,

Numerické literály • Obsahuje-li literál jen číslice a případně znaménko ukládá se jako int, se sufixem L jako long. Vyjadřuje jen celá čísla zapsána jako: dekadicky [ + | - ] 10289 [ L ] oktalově [ + | - ] 000567 [ L ] hexadecimálně [ + | - ] 0 x 012 DEF [ L ] binárně [ + | - ] 0 b 0101 [ L ] Vložit hodnotu do typu byte či short lze jen s přetypováním, např. : byte b = ( byte ) 0 x. FF; // má hodnotu -1. int i = b; // • Obsahuje-li literál tečku či exponent, ukládá se jako double. Sufix F či D vynutí typ float či double. Např. : 123. 0, 0123. , . 5, +123. 45, -00123 e 2, -123 e 2, 12300 e-2, -123. 0 F , 0123. f, . 5 F, +123. 45 e+3 F, 125 D, -333 f apod. • Písmena v literálech mohou být libovolně velká či malá. • Mezi číslice lze pro čitelnost vložit podtržítka, např: -10_289, 5. 123_789, 0 x 0123_ABCD, 0 b 1111_11111__0000 C 00 9

Integrální a „reálná“ aritmetika Na hodnoty typu int, long, float a double lze užít

Integrální a „reálná“ aritmetika Na hodnoty typu int, long, float a double lze užít operátory: ( Hodnoty typu byte, short a char se převedou na typ int. ) ++ -inkrementace tj. přičtení 1, dekrementace tj. odečtení 1, + - * sčítání či unární plus, odčítání či negaci, násobení, HW Přetečení přitom se nijak nehlásí ! / % dělení, modulo tj. zbytek po dělení HW Jsou-li oba a operandy int, long dojde na integrální dělení ! Je-li dělitel integrálního dělení nula, dojde k vyjímce! Na hodnoty typu int a long lze užít navíc operátory posunu a logické : << >> >>> aritmetické posuny a logický posun HW & | ^ ~ AND OR XOR INVERZE po bitech HW Operátory pro hodnoty typu float a double : + - * / % HW Nevyhazuje žádné výjimky, avšak zahrnuje tři speciální hodnoty: Na. N - Not a Number, tj. nečíslo nebo neurčitý výraz POSITIVE_INFINITY NEGATIVE_INFINITY S těmito hodnotami lze provádět další operace, avšak již nelze získat opravdové číslo. Krom x != Na. N je každé porovnání s Na. N vždy false. C 00 10

Další operátory = přiřazení HW += -= *= /= %= <<= >>>= &= ^=

Další operátory = přiřazení HW += -= *= /= %= <<= >>>= &= ^= |= aktualizace a pak přiřazení Např. pro int i = 0, i += 2 odpovídá i = (int) (i+2) a tedy i += 2. 9 je ekvivalentní i += 2. ++ -- inkrement/dekrement jako prefix/sufix, např. -- i / i++ znamená aktualizace pak použití / použití pak aktualizace. << >> aritmetické posuny int / long o 0. . 31 / 63 bitů vlevo / vpravo, >>> logický posun vpravo ( zleva se přidávají nuly ) HW HW přičemž hodnota posunu se maskuje 0 b 1_1111 / 0 b 11_1111 + zřetězení – je-li alespoň jeden z operandů řetěz instanceof - test referenčního typu vrací hodnotu boolean ( type ) - přetypování C 00 11

Komparace Výsledkem porovnání je logická hodnota ( true, false ). • Porovnání primitivních typů:

Komparace Výsledkem porovnání je logická hodnota ( true, false ). • Porovnání primitivních typů: == != rovno, nerovno, > >= větší než, větší nebo rovno, < <= menší než, menší nebo rovno, <> - tzv. diamond, symbol generické inference ( vnesení ) nikoli !=. Ku podivu lze ho psát i jako < >. • Test identity referenčních typů je pouhý test referencí: == != nikoli hodnot objektů. Objekty, tj. jejich hodnoty, se porovnají metodami v patřičné třídě, typicky: boolean equals( Object o ) - java. lang. Object int compare( … o 1, … o 2 ) … dle typu 8 obalových tříd int compare. To( Object o ) - java. lang. Comparable int compare( Object o 1, Object o 2 ) - java. util. Comparator int compare( Object o 1, Object o 2, Comparator c ) - java. util. Objects C 00 12

Bitové a logické operátory Bitové a logické unární operátory: sestupně podle priority: ! pro

Bitové a logické operátory Bitové a logické unární operátory: sestupně podle priority: ! pro negaci typu boolean ~ pro bitovou inverzi celého čísla Logické binární operátory: • Operandy musejí být buď oba celočíselné anebo oba boolean. & pro AND, | pro OR , ^ pro XOR HW • Pro zkrácené vyhodnocení typů boolean: && pro AND, || pro OR Je-li výsledek dán prvním operandem, zbytek výrazu se nevyhodnocuje. Pozor na vedlejší efekty, je-li dalším operandem např. volání metody. • Pozor na nizší priority && a || : C 00 false && true | true false && true || true ( false && true ) | true dá false dá true 13

Ternární výraz je podmíněný - vrátí jednu ze dvou hodnot dle podmínky podmínka ?

Ternární výraz je podmíněný - vrátí jednu ze dvou hodnot dle podmínky podmínka ? hodnota. Pro. True : hodnota. Pro. False • První operand musí být typu boolean. • Druhý a třetí operand mohou být různých typů. • Podmíněný operátor je zprava asociativní, tedy: a? b: c? d: e? f: g odpovídá a? b: (c? d: (e? f: g)) Příklad užití: int abs( int i ) { return i >= 0 ? i : - i ; } Object o = cond ? 1. 23 : "ABC" ; System. out. print( cond ? new Thread( ) : "ABC" ); C 00 14

Priorita a asociativita operátorů 1. ++ -- ++ -unární operátory prefixní resp. sufixní 1.

Priorita a asociativita operátorů 1. ++ -- ++ -unární operátory prefixní resp. sufixní 1. + - ~ ! (datový typ) unární operátory 2. * / % násobení, dělení, modulo 3. - + binární operátory, + také pro zřetězení 4. << >> >>> posuny aritmetické a posun logický 5. < > <= >= instanceof porovnání primitivních hodnot a typu 6. == != primitivních i referenčních hodnot 7. & AND bitový, logický 8. ^ XOR bitový, logický 9. | OR bitový, logický 10. && AND logický zkrácený 11. || OR logický zkrácený 12. ? ternární operátor primitivní či referenční hodnota 13. = += -= *= /= %= <<= >>>= &= ^= |= s následným přiřazením kde: levá asociativita: a / b * c je ( a / b ) * c pravá asociativita: - ++ a je - ( ++ a ), a = b = c je a = (b = c) C 00 15

Složené přiřazovací operátory += -= = /= = <<= >>>= &= ^= |= jsou

Složené přiřazovací operátory += -= = /= = <<= >>>= &= ^= |= jsou zkratky zápisu, např. pro int resp. String s lze napsat výraz: i += 2 místo i = i + 2 resp. s += “XYZ” místo s = s + “XYZ” • Hodnotou operace přiřazení je hodnota proměnné po provedeném přiřazení a proto je následující příklad chybný: double d; int i = d = 10; // Error: possible loss of precision: double, required int Java 8 zavádí další symboly: -> šipka („arrow token“) typová inference (vnesení, úsudek, vyvození) : : reference metod a konstruktorů C 00 16

Vyhodnocení výrazu se provádí v zásobníkovém automatu. Např. výraz: x = -1 + (

Vyhodnocení výrazu se provádí v zásobníkovém automatu. Např. výraz: x = -1 + ( 2 << 3 ) * 4 / ( 5 – 6 ) x 1 – 2 3 << 4 * 5 6 – / + = pořadí 1 2 3 4 5 6 7 infix forma postfix forma (polish reversal) Zásobník (horizontální): 1 = x +6 x 1– – x – 1 2 3 << x – 1 16 4 * x – 1 64 5 6 – x – 1 64 – 1 / x – 1 – 64 + x – 65 = – 65 a ulož do x 7 1 /5 1 *3 << 2 4 5 – 4 6 2 3 syntaktický strom Výrazy jen s literály a operátory vyhodnotí již kompilátor. C 00 17

Použití obalových tříd • • • int i. Max = Integer. MAX_VALUE; int k

Použití obalových tříd • • • int i. Max = Integer. MAX_VALUE; int k = Integer. parse. Int( "123" ); String s = Integer. to. Hex. String( k ); Integer i = new Integer( "123" ); int i = Integer. compare( 3, 5 ); // obdobně pro typy byte, short, long // // // zjištění max. hodnoty konverze řetěz - číslo konverze do hexa konverze řetěz - číslo komparace • • double d. Max = Double. MAX_VALUE; double x = Double. parse. Double( "-123. 45" ); boolean b = Double. is. Na. N(x); int i = Double. compare( 3. 0, 5. 0 ); // obdobně pro typ float // // zjištění max. hodnoty konverze řetěz - číslo test na nečíslo komparace • char c = Character. to. Lower. Case( 'Z' ); // převod znaku • boolean b = Character. is. Letter. Or. Digit( '@' ); // je to písmeno / číslice? • int i = Character. digit( ''f" , 16 ); // hexadec. hodnota znaku Tzv. autoboxing automaticky za/roz-baluje primitivní typy do/z příslušných obalových objektů, např. : Double dd=2. 71; double d=dd; C 00 18

Třídy pro matematické operace • Pro typy int, long, float a double třída java.

Třídy pro matematické operace • Pro typy int, long, float a double třída java. lang. Math obsahuje statické funkce: abs, min, max, sqrt, cbrt, pow, exp, log, ceil, floor, random, sinh, asin, tanh, to. Degrees, to. Radians, hypot … a řadu dalších, jakož i významné konstanty PI=3. 14… a E=2. 71… • java. lang. Strict. Math je identická strictfp – dodržuje přesně normu IEEE 754, byť by hardware umožňovalo více. • Pro čísla s libovolným rozsahem a přesností: java. math. Big. Integer - pro celá čísla java. math. Big. Decimal - pro desetinná racionální čísla Výpočty se provádějí pouze metodami patřičných tříd - nikoli operátory. C 00 19

Literály • Logický: true a false. • Typový: je typu Class a lze tedy

Literály • Logický: true a false. • Typový: je typu Class a lze tedy přiřadit např. : Class x = int. class, int[ ]. class, Point[ ][ ]. class, Comparable. class, apod. • Znakový: znak Unicodu v apostrofech např. : ' ' = 0 x 0020 = 32, '0' = 0 x 0030 = 48, 'A' = 0 x 0041 = 65, 'a' = 0 x 0061 = 97 Též pomocí escape chars: ''' '\' 'u. Cafe' ale: n či rn. • Řetězový: posloupnost znaků Unicodu ( i prázdná ) v uvozovkách např. : "Abc 123" "Řeřicha" "@" "" "My u. Cafe 101 Tea n ". Je to objekt typu java. lang. String a lze volat metody třídy String. • Escape chars (ASCII): ’ " \ r n f t b ooo uhhhh pro: apostrof 0 x 27 = 39, uvozovku 0 x 22 = 34, backslash 0 x 2 F = 47, carriage return (CR 0 x 0 D), line feed (LF 0 x 0 A), form feed (FF 0 x 0 C), horiz. tabulator (HT 0 x 09), backspace (BS 0 x 08), o - octal, h - hexadec C 00 20

Unicode – viz www. unicode. org kóduje světové symboly na 16 -ti bitech (čínské

Unicode – viz www. unicode. org kóduje světové symboly na 16 -ti bitech (čínské znaky na 21 bitech) takto: stránka_znak v rozsahu: 0 x 00_00 – 0 x. FF_FF ( = 0 – 65535 ), 00 – ASCII angličtina, 01 – Latin 1 – jazyky románské, germánské, 02 – Latin 2 – slovanské, ugrofinské, baltické, 03 – řečtina, 04 – kyrilice, 05 – arménština, hebrejština, 06 - arabština … E 0 – F 8 Con. Script Unicode Registry … F 8 D 0 – F 8 FF klingonština (plaqa. D) ASCII 7: 0 x 00_00 – 0 x 00_7 F ( = 0 -127 ), 00 -1 F (=0 -31) řídící znaky 20 (=32) mezera … !"#$%&'()*+, -. / 30 -39 (=48 -57), číslice ‘ 0’ – ’ 9’ … : ; <=>? @ 41 -5 A (=65 -90), písmena ‘A’ – ’Z’ … []^_` 61 -7 A (=97 -122), písmena ‘a’ – ’z’ … -7 F {|}~ C 00 binárně: 010_0000 binárně: 011_0000 - 011_1001 binárně: 100_0001 - 101_1010 binárně: 110_0001 - 111_1010 21

Klíčová slova a reservované literály: logické: false true referenční: null typy: primitivní[8]: boolean byte

Klíčová slova a reservované literály: logické: false true referenční: null typy: primitivní[8]: boolean byte short int long char float double řídící příkazy: if else for do while break continue switch case default return pro výjimky a chyby: throw try catch finally assert operátory: instanceof new this super strukturální: package import static class enum interface extends implements modifikátory: přístupu: public protected friend se nepíše private atributů, metod, tříd: final static metod, tříd, interfejsů: abstract strictfp static metod: native void throws default* metod, bloků: synchronized atributů: transient volatile nefunkční: const goto Toto rozdělení neodpovídá zcela přesně specifikaci Javy. C 00 * - Java 8 22

Základní konstrukty (1/3) [ public | protected | private ] [ static ] [

Základní konstrukty (1/3) [ public | protected | private ] [ static ] [ transient ] [ volatile ] // pro atributy [ final ] typ [ [ ] ] id [ = výraz ] , . . . ; // lokální var. s inicializací { příkaz; blok; definice. . . ; příkaz; . . . ; } // blok if ( podmínka ) příkaz 1 [ else příkaz 2 ] // podmíněný příkaz podmínka ? výraz 1 : výraz 2 // ternární výraz pro true : false [ návěští : ] // jen před cykly while ( podmínka ) příkaz do příkaz while ( podmínka ) ; for ( [ init. List ] ; [ podmínka ] ; [ modif. List ] ) příkaz for ( [ final ] typ elem // jen v cyklu : ( Iterable | pole ) ) příkaz typicky kolekce continue [ návěští ]; // jen v těle cyklu – přechod na test podmínky break [ návěští ]; // ukončení příkazu cyklu, switch (v case, default ) return [ výraz ]; // jen v metodě, konstruktoru, inicializátorech C 00 - metasymboly 23

Základní konstrukty (2/3) - switch ( index ) { [ case k 1 :

Základní konstrukty (2/3) - switch ( index ) { [ case k 1 : [ příkazy ] case k 2 : [ příkazy ] case k 3 : [ příkazy ]. . . ] [ default : [ příkazy ] ] [ case k 4 : [ příkazy ]. . . ] } // typ indexu: char, byte, short či int, enum, // Character, Byte, Short, Integer, String. // k musí být konstantní výrazy různých // hodnot typu int či enum konstanty // či typu String - ale ne obalené hodnota // Nezávisle volitelné a kdekoli v pořadí // typ indexu indukuje typ konstant k - try [ ( zdroj [ ; zdroj ] … ) ] // zdroje musí být Auto. Closeable { [ příkazy ] } [ catch ( [ final ] t 1 [ I t 2 ] … parm ) { [ příkazy ] } // I vertical bar catch ( [ final ] t 3 [ I t 4 ] … parm ) { [ příkazy ] } // značí alternaci. . . ] // t musí být typu Throwable [ finally { [ příkazy ] } ] // nelze vynechat catch i finally C 00 24

Základní konstrukty (3/3) - throw objekt // objekt typu Throwable - synchronized ( výraz

Základní konstrukty (3/3) - throw objekt // objekt typu Throwable - synchronized ( výraz ) blok // výraz musí referovat objekt - assert podmínka [ : výraz ] ; // kontrola podmínky - enum jméno { // výčtový typ ABC [ ( atributy ) ] [ { metody } ] , DEF [ ( atributy ) ] [ { metody } ] , GHI [ ( atributy ) ] [ { metody } ] ; . . . // další složky } - Class [ <T> ] = T. class C 00 // popisný objekt typu třídy 25

Syntaxe metod ( bez generiky ) // modifikátory metod konkrétní, nativní, abstraktní v libovolném

Syntaxe metod ( bez generiky ) // modifikátory metod konkrétní, nativní, abstraktní v libovolném pořadí : [ public | protected | private ] [ static ] [ final ] [ synchronized ] [ strictfp ] [ public | protected | private ] [ static ] [ final ] [ synchronized ] native [ public | protected ] abstract ( return. Typ | void ) jméno. Metody ( [ [ final ] Typ parm, … [ [ final ] Typ. . . varargs ] ] ) // formální parametry [ throws Thw 1, Thw 2, . . . ] // stigma: seznam neřešených nehod // Vynechání varargs při volání se vytvoří patřičné pole nulové délky. {. . . } ; // tělo konkrétní metody // pro návratový typ void může být tělo i prázdné // jen středník pro abstract i native metody Příklad volání: jmeno. Metody( x, y, z 1, z 2, z 3 ); possible autoboxing Vrácená hodnota musí být kompatibilní s návratovým typem metody. C 00 26

Důležité pojmy literál: proměnná: metoda signatura inicializátor třída interfejs C 00 ( literal )

Důležité pojmy literál: proměnná: metoda signatura inicializátor třída interfejs C 00 ( literal ) sebevyjadřující konstantní hodnota ( variable ) lokální ( local variable ) definována v metodě, konstruktoru, inicializátoru parametr – lokální proměnná definovaná v hlavičce třídní ( class variable ) static instanční ( class variable ) funkce či procedura vrací hodnotu či nevrací nic ( void ) konkrétní - má tělo { … } event. i prázdné abstraktní - nemá tělo – má jen středník ( abstract ) metody / konstruktoru: jméno a seznam typů parametrů stigma metody: throws seznam Throwable přetížení - shoda jmen leč rozdílné signatury překrytí - shoda signatur v předkovi a potomkovi statický: static { … } anebo nestatický: { … } ( class ) , výčet ( enum ) rozhraní ( interface ) 27