Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Vytvoření prvního programu

Podobné prezentace


Prezentace na téma: "Vytvoření prvního programu"— Transkript prezentace:

1 Vytvoření prvního programu
public class NazdarSvete { public static void main ( String arg[] ) { System.out.println (“Nazdar Svete”); }

2 Instalace JAVA Nainstalovat J2SDK-Java 2 Software Development Kit
Editor Notpad NazdarSvete.java Kompilování javac NazdarSvete.java Vytvořen NazdarSvete.class – soubor v bytovém kódu Spuštění programu java NazdarSvete

3 Rozbor programu v jazyce JAVA
Definice třídy Modifikátor přístupu – public Klíčové slovo class Název třídy NazdarSvete Tělo třídy { }

4 Definice metody Třída má dva prvky – atributy (vlastnosti) a metody (chování) Atributy nejsou povinné Metodu musí mít alespoň jednu metodu main() Metoda se skládá s Název metody Argument metody Tělo metody Návratová hodnota metody

5 Příkaz Příkaz je instukce pro počítač, na základě kterého se vykoná
V příkladě println( ) Příkaz říká stroji JVM, aby na obrazovce vypsal větu „Nazdar Světe !“ System.out.println(“Nazdar Světe!”) ;

6 Java Jak přeložit a spustit program Komentáře
Přidat cestu kde se nachází javac.exe javac Prvni.java java Prvni Komentáře Jednořádkový komentář // komentář do konce řádku Komentářový blok /* xxxxxxx */ Dokumentční komentář pomocí javadoc .exe /** xxxxxxx */

7 Zápis identifikátorů Třídy a rozhraní – velkým písmem- složené slovo PrvniProgram Metody a proměnné – malým písmem počet, pocetPrvku Balíky – pouze z malých písmen. Ve složených slovech odděleny tečkou java.lang Konstanty – Velká písma MAX_VALUE,PI

8 Hlavní program Hlavní program – metoda pro spuštění musí obsahovat metodu main() public static void main(String[] args){ }

9 Základní datové typy Také se nazývají primitivní datové typy
Celočíselné Znakové Logické Reálné A prázdný znak void

10 Celočíselné typy a jejich konstanty
byte 8 bitů short 16bitů int 32bitů long 64bitů Desítkové: 86,15,0,1 Osmíčkové: 026,015,01,0 Šestnáctkové: 0x56,0x67,0xA3,0xCD

11 Znakový typ a jeho konstanty
char – velikost dvou bytů – 16 bitů Unicode jedním znakem ´A´,´1´,´%´ Posloupností ´\uXXXX´ ´\u0041´ je znak ´A´ Escape sekvencí ´\ n´ \u000A nová řádka

12 Řetězové konstanty (literály)
˝Takhle vypada velmi dlouhy retezec˝ ˝Takhle˝+˝vypada˝+˝velmi dlouhy retezec˝

13 Logický typ a jeho konstanty
Boolean Dvou hodnot true= log.1, false = log.0

14 Reálné datové typy a jejich konstanty
Float bitů Double bitů Reálná konstanta je automaticky double, chceme-li typ float float f = 3.14F Minimální hodnota typu int a float int i = Integer.MIN_VALUE float f = Float.MIN_VALUE MAX_VALUE POSITIVE_INFINITY,NEGATIVE_INFINITY NaN dělení nuly nulou. Metody inInfinity() a NaN()

15 Pole –referenční datový typ
Java obsahuje dva neprimitivní datové typy a to pole a objekty Proměnné těchto typů jsou označovány jako referenční Referenční proměnné i jména polí se využívají podobně jako ukazatelé v jiných programovacích jazycích Hodnota referenční proměnné není adresa v paměti Reference (odkaz) je míněná konkrétní hodnota referenční proměnné.

16 Deklarace pole Skládá se ze dvou části – z typu pole a z jeho jména
Int [] poleInt; Je nutno před prvním použitím poleInt = new int [20]; int[] poleInt = new int [20];

17 Délka pole Můžeme vždy zjistit pomocí členské proměnné se jménem length Např. System.out.println(„Počet prvku pole:“+ poleInt.lenght); První prvek má vždy index [0] a poslední prvek [jmenoPole.length -1]

18 Inicializované pole Pole nemusíme vytvořit jen pomocí new, byť je to nejčastější Můžeme vytvořit pole pomocí statického iniciátoru int[]prvocisla = {1,2,3,5,7,11};

19 Dvourozměrná pole int[][] = new int [5] [4]; Inicializace
int[][] b = {{1,2,3}, {11,12,13}, {21,22,23}};

20 Trojrozměrná pole int [][][] d =new int [5][5][5];
Více rozměrů v jednorozměrném poli final int RADKY = 24; final int SLOUPCE =80; byte [] obrazovka = new byte [RADKY*SLOUPCE]; for (int i = 0; i < RADKY; i++) { for (int j = 0; j < SLOUPCE; j++) { obrazovka [i * SLOUPCE + j] = 0; ………

21 Třída Array Je součásti balíčku java.util
Účelem je usnadnit práci s poli Metody – nejpoužívanější equel(),fill(),sort() a binarySearch() equels() Slouží k porovnání dvou polí zda jsou si rovny Parametrem jsou obě pole, které chceme porovnávat Array.equels( student1Hodnoceni,student2Hodnocení);

22 Třída Arrays fill() Metoda, pomocí níž chceme nastavit v velkém poli např. počáteční hodnoty Int idStudent[] = new int [2000]; Arrays.fill(idStudent,0); Metoda dovoluje specifikovat rozsah prvků v poli, které mají být naplněny určitou hodnotou. Arrays.fill(idStudent,200,301,0);// od 200, do 300 nahrazeno hodnotou nula.

23 Třída Arrays sort () Třídění hodnot prvků pole podle velikosti nebo podle abecedy binarySearch() Používá k nalezení prvku, který obsahuje danou hodnotu Je třeba před hledáním setřídit pole pomocí metody sort() Výstupem je index pole, kde se daná hodnota v poli nachází.

24 Řetězec Vytvoření řetězce: String s = “ahoj“; Ukázka:
String s1,s2,s3,s4,s5,s6,s7;//deklarace Byte[] bajty = {(byte)‘E‘, (byte)‘V‘,(byte)‘A‘}; Char[] znaky = {M‘,‘A‘,‘R‘,‘T‘,‘I‘,‘N‘,‘A‘}; StringBuffer buf = new StringBuffer („dobry den“); S1 = new String(„cao“); S2 = new String(s1); S3 = new String(bajty); S4 = new String (bajty,1,2); S5 = new String (znaky); S6 = new String (znaky,3,4); S7 = new String (buf); Délka řetězce : S7.length();

25 Pole řetězců Porovnání
String[] pole = („DANA“,“EVA“,“MARTINA“); For ( int i=0; i< pole.length; i++) System.out.println(pole(i)); Porovnání compareTo(),compareToIgnoreCase()-porovnává lexikograficky(slovníkově)dva řetězce Vrací int číslo <řetězec jako parametr <0, rovny 0,větší >0. equals()- zjistí zda jsou řetězce shodné vrací true nebo false equalsIgnoreCase() – zjisti zda jsou řetězce shodné, přičemž nerozlišuje malá a velká písmena

26 Řetězce Převody na malá či velká písmena toLowerCase() , toUpperCase()
Spojování řetězců concat() Náhrada všech znaků v řetězci replace()

27 Řetězec (1) Práce s části řetězce Získání části řetězce - podřetězec
substring(pozice) Kopírování řetězce do pole znaků. getChars(2,9,jmeno pole,0) 2-od indexu 2 po index 9 do jmeno pole od indexu 0.

28 Řetězec (2) Velmi snadno se dá otestovat zda řetězec začíná nebo končí určitým podřetězcem Začíná startWith(„podřetězec“) Končí endWith („podřetězec“) Získání jednotlivého znaku z řetězce charAt(pozice)

29 Řetězec (3) Hledání znaku
Není-li nalezen vrací –1, pokud je nalezen vrací pozici v řetězci indexOf(´požadovaný znak´, od dané pozice) – od začátku se prohledává lastIndexOf(´znak´, od dané pozice) – od konce se prohledává

30 Konverze základních datových typů na řetězec
String.valueOf(číslo daného typu) Konvertování do jiné číselné soustavy toBinaryString(), toOctalString(), toHexString()

31 Konverze řetězce na základní datové typy
Pro převod budu používat metody tříd Boolean, Byte, Short, Integer, Long, Float, Double Int i = Integer.valueOf(„123“).intValue(); valueOf(„1A2B“, 16) druhé číslo je číselná soustava

32 Třída StringBuffer b1=new StringBuffer() – řetězec 16 znaků
b3 = new StringBuffer(„Ahoj“) – řetězec 4znaky+16znaků rezerva = 20 znaků

33 Délka řetězce length()- aktuální délka řetězce
capacity()-max možná délka(kapacita) Kapacita řetězce je možné změnit dvěma metodami ensureCapacity(int k)- k je větší, než je současná kapacita,zjistí,že řetězec bude mít kapacitu maxima z velikosti k a z dvojnásobku současné kapacity plus dva znaky navíc. K je menší než současná kapacita –ponechá řetězec nezměněn. setLength(int k)-k větší než současná kapacita zvětší aktuální délku řetězce na k a kapacitu na dvojnásobek současné kapacity plus dva znaky - k menší než současná kapacita, ponechá kapacitu nezměněnu a aktivní délku nastaví na k –může řetězec prodloužit i oříznout.

34 Změny celého řetězce reverse()- lze celý řetězec obrátit,tzn.poslední zan bude poslední append()- přidat na konec řetězce delete(int poč_index, int kon_index)- vyříznout část řetězce deleteCharAt(int index)-ubrat jednotlivý znak insert(int index, typ t) –vkládat libovolný datový typ replace(int poč_ind, int kon_ind, String nový_podřetěz) – nahrazení jeden podřetězec novým

35 Získání jednotlivého znaku
charAt(int index)- získání jednotlivého znaku setCharAt(int index, char ch) – změna jednotlivého znaku za jiný

36 Konverze na String Pomocí metody toString()- převede celý řetězec
Pomocí metody subString()- jen část od zadaného indexu včetně až do konce nebo do druhého indexu.

37 Metody Program v Javě obsahuje jednu nebo více deklarací metod (podprogramů,funkcí) Metody třídy – statické metody (klíčové slovo static) Metody instance Zpracování programu začíná vyvolání metody main() a končí opuštěním této metody Jedna metoda nemůže obsahovat ve svém těle deklaraci druhé metody Formální a lokální parametry jsou přístupné pouze v metodě, v níž byly deklarovány a jsou skryté z vnějšku této metody.

38 Deklarace metody Deklarace zahrnuje jak hlavičku metody jméno metody,
typ návratové hodnoty případně i typy a jména jejích formálních parametrů Static int max(int a, int b){ if(a>b) return (a); else return (b); }

39 Metody bez parametrů static int secti() { int a, b; a = ctiInt();
b = ctiInt(); return (a+b); } Volání metody: J = secti();

40 Metody bez návratového typu-procedury
V Javě každá metoda musí mít uveden návratový typ Návratový typ se uvádí void(tj.prázdný) static void tiskPenez(int koruny) { Systém.out.println(˝Cena:˝ + koruny + ˝ Kc˝); } Volání: tiskPenez(a+b); tiskPenez(10); tiskPenez(a);

41 Procedury bez parametrů
Static void tisk() { Systém.out.println(˝Ahoj˝); } Volání metody : tisk()

42 Procedury s více parametry různých typů
Potřebujeme-li metoda větší množství formálních parametrů, vypisují se jednotlivě včetně svých typů a oddělují se čárkami. V deklaraci metody si musíme pořadí dodržet Nelze psát static int secti(int a,b) { ale static int secti(int a, int b) {

43 Rekurzivní metody Rozdíl od ostatních metod je v jejím těle
rekurzivní metoda volá sama sebe používá se jen tehdy, vede-li na ně algoritmus, který nelze snadno obejít. nahrazuje se jednoduchým cyklem for, který je přehlednější a také rychlejší

44 Konverze skutečných parametrů a návratové hodnoty metody
Pokud není typ návratové hodnoty shodný s návratovým typem metody a neprovádí se implicitní rozšiřující typová konverze, je nutné provést explicitní zužující typovou konverzi. To samé platí pro skutečné parametry metody – to jsou ty, s nimiž je metoda volána,pokud jejich typy nesouhlasí s formálními parametry – s těmi byla metoda deklarována. static int konv1(double d) { return (int) d ; } static double konv2(int d) { return d; public static void main (String [] args) { int k = konv1(4); doble j = konv2( (int) 4.5);

45 Předávání skutečných parametrů metod
U Javy pouze jeden způsob předávání parametrů a to hodnotou. static int změna (int i) { i++; return i; } public static void main(String[] args) { int j , k=4; j = změna (k); Systém.out.println(„k = „+k+“, j= „ +j);

46 Přetížení metody Jsou metody, které mají stejná jména, ale různé hlavičky přetížená,znamená, že se její formální parametry musí lišit počtem nebo typem nebo pořadím, popřípadě kombinací těchto způsobů kompilátor vybere tu z metod, která přesně vyhovuje počtu,typům a pořadí skutečných parametrů

47 Přetížené metody - příklad
Trojnásobně přetížené metody ctverec() static int ctverec(int i) {return i*i;} static double ctverec(double i) {return i*i;} //static long ctverec(int i) {return i*i;} chyba static long ctverec(long i) {return i*i;} public static void main (String[] args) { int j = ctverec(5); double d = ctverec(5.5); long l = ctverec(12345L); Systém.out.println(„j=„ + j+ „,d=„+d+“,l=„ +l); } Vypíše se : j=25, d=30.25, l=

48 Nelokální proměnné –“globální“ proměnné
V Javě pojem globální proměnná neexistuje –každá proměnná musí někomu patřit – třídě. pokud je proměnná deklarovaná vně metody tak je potom přístupná všem metodám ,které jsou deklarovány v téže třídě lze nejdříve deklarovat metody a teprve potom deklarovat proměnné Proměnná třídy( též statická proměnná)- i metoda třídy je uvozena klíčovým slovem static a proměnná instance není uvozena slovem static. Ve statické metodě je nutné použít výhradně jen statické nebo lokální proměnné.

49 Proměnné metod – lokální proměnné
Jsou to všechny proměnné deklarované kdekoliv uvnitř metody.Tyto proměnné jsou viditelné pouze v metodě, v níž jsou deklarovány. (platí i u metody main()) Rozsah platnosti od místa deklarace do konce metody (případně do konce bloku), ve které jsou deklarovány.

50 Příklad – lokální proměnné
static void tiskni() { int i = 6; Systém.out.println(i); { // int i = 7; // chyba –dvojnásobná deklarace // long i = 7; // chyba – dvojnásobná deklarace int j =8; Systém.out.println(j); } // Systém.out.println(j); // chyba – j není viditelná

51 Příklad – lokální proměnné
static void tiskni2() { int i = 6; System.out.println(i); // for (int i = 1; i<5; i++) // chyba }

52 Zastínění nelokálních proměnných lokálními
Má-li proměnná třídy (instance) stejné jméno ( na typu nezáleží) jako lokální proměnná, pak ji lokální proměnná ve své metodě zastiňuje Existuje možnost jak k této proměnné třídy přistoupit – plně kvalifikovaného jména - třída . jméno proměnná

53 Příklad – zastíněné proměnné
public class Metody { static int i = 5 ; ststic void tiskni () { int i = 6; Systém.out.println (i); // tiskne 6 Systém.out.println (Metody.i); // tiskne 5 } public static void main (String [] args) { tiskni ();

54 Třídy a objekty V OOP jazyce je základním kamenem třída –class
Třída soubor proměnných( členské proměnné – member variables , datové složky, atributy – je uložen stav objektu) a konstant a podprogramů (metody- methods) – pracují s členskými proměnnými a mění vlastnosti objektu ) . Metoda popisuje schopnosti ( dovednosti, vlastnosti,…) objektu. Třída je jen jakási šablona (objektový typ) – sama o sobě nemá přidělenu žádnou paměť.

55 Objekt Objekt (object) je datový prvek, který je vytvořen podle vzoru třídy. Často se říká instance třídy a často se pojmy objekt a instance zaměňují. Když bude v programu použita jen jedna třída ( s metodou main()) a tato třída bude volat alespoň jednu metodu instance ( bez static) , musí se objekt této třídy v main() vytvoři – třída vlastně vytváří instanci sama sebe..

56 Deklarace třídy Program v Javě obsahuje vždy alespoň jednu třídu.
Deklarace začíná slovem class a jsou v ni deklarovány proměnné i metody.Tělo třídy začíná a končí stejně jako metody tj. {}

57 Příklad Public class Obdelnik { public int sirka; public int vyska;
public int obvod () { int pom ; pom = 2 * (sirka + vyska); return pom; } public int obsah() { return ( sirka * vyska);

58 Vytvoření objektu Pro vytvoření objektu potřebujeme provést dvě akce:
Deklarovat referenční proměnnou typu Obdelnik, která bude v sobě uchovávat referenci na skutečný objekt (instanci) obdélníka – bude na něj odkazovat Obdelnik obd; Pomocí new nechat vytvořit v paměti objekt obdelníka a získanou referenci na něj přiřadit do připravené proměnné. obd=new Obdelnik();

59 Popis vytvoření objektu
Dynamicky se vytvořila instance (objekt) třídy Obdelnik a odkaz na tuto instanci se přiřadil do referenční proměnné obd. Od této chvíle máme (přes referenční proměnnou ) k dispozici obě proměnné ( nastavené implicitně na nulu) i obě metody.

60 Instanční proměnné Proměnné sirka a vyska nemají klíčové slovo static – proměnné instance – vytvoří se až po new, to znamená každá instance třídy Obdelnik má svoje proměnné sirka a vyska. Protože patří konkrétní instanci, nazývají se také instanční proměnné. To samé platí pro metody obvod() a obsah(). Nedají se použít samostatně , ale pro danou instanci.

61 Přímý přístup k datům objektu
Při vzniku objektu obdélník obd je sirka a vyska rovna nule. My můžeme tyto proměnné změnit obd.vyska = 5; obd.sirka = 3;

62 Práce s metodami Pro přístup k metodám se používá naprosto stejný zápis jako pro přístup k datům i = obd.obvod();

63 Konstruktory Vytvoření nového objektu Obdelnik
Obdelnik obd = new Obdelnik (); Objekt se vytváří vyvoláním speciální metody – konstruktoru ( constructor) Konstruktor má vždy stejné jméno jako název třídy – nemá žádnou návratovou hodnotu, ale může mít libovolný počet parametrů i různých typů


Stáhnout ppt "Vytvoření prvního programu"

Podobné prezentace


Reklamy Google