Lekce 4 - Proměnné a typový systém v Javě
Z minulé lekce, IntelliJ IDEA a Copilot, již umíme pracovat s IntelliJ IDEA a máme nainstalovaného GitHub Copilota.
V dnešním Java tutoriálu si naprogramujeme naši první konzolovou aplikaci. Podíváme se na tzv. typový systém, ukážeme si základní datové typy a práci s proměnnými. Výsledkem bude jednoduchý program vypisující proměnnou.
Náš první program Hello world
Je zažitým zvykem, že prvním programem v nějakém novém jazyce bývá
tzv. Hello world. Jedná se o program, který jakýmkoli způsobem uživateli
zobrazí hlášku "Hello world", případně nějaký podobný text. Raději
zopakujeme, že příkazy budeme psát do těla metody main().
K výpisu textu slouží:
System.out.println("Text");
System je tzv. třída. Pojmem třída budeme
zatím chápat soubor nějakých příkazů. Příkazům se v Javě říká
metody. System tedy obsahuje metody k obsluze vstupů a
výstupů.
Na výstupu (out) voláme metodu println(), která
vypíše text. Vidíme, že metodu na třídě voláme pomocí operátoru
tečka. Každá metoda může obsahovat nějaké vstupní parametry, které se
zadávají do závorky a jsou oddělené čárkou. V případě metody
println() je parametrem text k vypsání.
Textu budeme říkat textový řetězec nebo jen řetězec (anglicky string). Text budeme ho psát do uvozovek, aby tomu Java rozuměla a nezaměňovala ho s jinými příkazy. I kdyby metoda neměla žádné parametry, je závorka za ní povinná a byla by prázdná.
Příkazy píšeme na samostatné řádky a za každý píšeme středník
(;).
Pokud nevíte, kde se na klávesnici nachází ;,
tak ho najdete pod klávesou Esc:

Naše metoda main() tedy bude nyní vypadat nějak takto:
package onlineapp;
class Program
{
public static void main(String[] args) {
System.out.println("Hello ITnetwork!");
}
}
Můžeme ulehčit život využitím doplňovacích možností a místo
vypisování System.out.println... můžeme napsat
sout a stisknout Tab. IDE napíše
System.out.println("") za nás a ještě nám šikovně umístí
kurzor přímo mezi uvozovky.
Uvozovky jsou na české klávesnici na stejné klávese jako ů, ale píšeme je s klávesou Shift:

Program nyní spustíme. Výstup našeho prvního programu bude vypadat nějak takto:

GitHub Copilot
GitHub Copilot použijeme k vysvětlení kódu. Otevřeme
Copilot chat a zadáme prompt: "Detailně mi vysvětli kód v metodě jako
pro úplného začátečníka.". Copilot nám následně vysvětlí, co
program v metodě Main dělá:

Takové vysvětlení se může hodit například tehdy, když narazíme na kód, kterému úplně nerozumíme. Je ale dobré mít na paměti, že AI může udělat chybu, proto je vždy důležité přemýšlet nad tím, jestli vysvětlení dává smysl.
Gratulujeme, právě jste se stali programátorem 😊
Proměnné
Než začneme řešit datové typy, pojďme se shodnout na tom, co je to
proměnná (programátoři teď jistě odpustí zbytečné vysvětlování). Z
matematiky určitě znáte proměnnou (např. x), do které jsme si
mohli uložit nějakou hodnotu, nejčastěji číslo. Proměnná je v
informatice naprosto totéž, je to místo v paměti počítače, kam si
můžeme uložit nějaká data (jméno uživatele, aktuální čas nebo
databázi článků). Toto místo má podle typu proměnné také
vyhrazenou určitou velikost, kterou proměnná nesmí přesáhnout (např.
číslo nesmí být větší než 2 147 483 647).
Proměnná má vždy nějaký datový typ. Může to být číslo, znak, text a podobně, záleží na tom, k čemu chceme proměnnou používat. Před prací s proměnnou ji musíme většinou nejdříve tzv. deklarovat čili musíme říci jazyku, jak se bude proměnná jmenovat a jakého datového typu bude (jaký v ní bude obsah). Jazyk ji v paměti založí a teprve potom s ní můžeme pracovat. Podle datového typu proměnné si ji jazyk dokáže z paměti načíst, modifikovat, případně ji v paměti založit. O každém datovém typu jazyk ví, kolik v paměti zabírá místa a jak s tímto kusem paměti pracovat.
Typový systém
Existují dva základní typové systémy, a to statický a dynamický.
Statický typový systém
Statický typový systém striktně vyžaduje definovat typ
proměnné a tento typ je dále neměnný. Jakmile proměnnou jednou
deklarujeme, není možné její datový typ změnit. Jakmile se do textového
řetězce pokusíme uložit objekt uzivatel, dostaneme
vynadáno.
Java je staticky typovaný jazyk, všechny proměnné tedy musíme nejprve deklarovat s jejich datovým typem. Nevýhodou je, že kvůli deklaracím je zdrojový kód poněkud objemnější a vývoj pomalejší. Obrovskou výhodou však je, že nám kompiler před spuštěním zkontroluje, zda všechny datové typy sedí.
Dynamický typový systém
Dynamický typový systém nás plně odstiňuje od toho, že proměnná má vůbec nějaký datový typ. Ona ho samozřejmě vnitřně má, ale jazyk to nedává najevo. Dynamické typování jde mnohdy tak daleko, že proměnné nemusíme ani deklarovat. Jakmile do nějaké proměnné něco uložíme a jazyk zjistí, že proměnná nebyla nikdy deklarována, sám ji založí. Do téže proměnné můžeme ukládat text, potom objekt uživatele a potom desetinné číslo. Jazyk se s tím sám popere a datový typ vnitřně automaticky změní. V těchto jazycích jde vývoj rychleji díky menšímu množství kódu. Zástupci jsou např. PHP nebo Ruby.
Dynamické typování sice působí jako výhodnější, ale zdrojový kód
není možné automaticky kontrolovat. Když někde očekáváme objekt
uzivatel, ale přijde nám místo toho desetinné číslo, odhalí
se chyba až za běhu programu, který interpret shodí. Naopak Java nám
nedovolí program ani zkompilovat a na chybu nás upozorní.
Základní datové typy
Pojďme si nyní něco naprogramovat, ať si nabyté znalosti trochu osvojíme. S teorií budeme pokračovat až příště. Řekněme si nyní tři základní datové typy:
- celá čísla:
int, - desetinná čísla:
double, - textový řetězec:
String.
String píšeme s velkým písmenem na začátku,
časem se dozvíme proč.
Program vypisující proměnnou
Založíme si nový projekt a pojmenujeme ho Vypis (i ke všem
dalším příkladům si vždy založíme nový projekt). Nyní zkusíme
nadeklarovat celočíselnou proměnnou a, dosadit do ní číslo
56 a její obsah vypsat do konzole. Kód napíšeme do těla metody
main():
{JAVA_CONSOLE}
int a;
a = 56;
System.out.println(a);
{/JAVA_CONSOLE}
Deklarace proměnné
První příkaz nám nadeklaruje novou proměnnou a datového
typu int, proměnná tedy bude sloužit pro ukládání celých
čísel.
Inicializace proměnné
Druhý příkaz provádí přiřazení do proměnné, k čemuž slouží
operátor "rovná se". Poslední příkaz je nám známý, vypíše do konzole
obsah proměnné a. Konzole je chytrá a umí vypsat i číselné
proměnné:
Konzolová aplikace
56
Desetinná proměnná
Pro desetinnou proměnnou by kód vypadal takto:
{JAVA_CONSOLE}
double a;
a = 56.6;
System.out.println(a);
{/JAVA_CONSOLE}
Je to téměř stejné jako s celočíselnou proměnnou. Jako desetinný
oddělovač používáme tečku. Na konci desetinného čísla se někdy uvádí
ještě tzv. sufix, který u typu double
používá písmeno D.
V dalších lekcích se dozvíme, že pro desetinná čísla
existuje také typ float. U něj je nutné uvést sufix
F. Typ double je výchozím typem pro
desetinná čísla, sufix tedy u něj není nutné použít.
To je pro dnešní lekci vše 🙂
V příští lekci, Načítání hodnot z konzole a parsování v Javě, se podíváme na načítání hodnot z konzole a parsování dat a poté si vytvoříme jednoduchou kalkulačku.
Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.
Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkami
Staženo 4008x (21.22 kB)
Aplikace je včetně zdrojových kódů v jazyce Java

David se informační technologie naučil na