2. Lekce - datový typ char

Datový typ char.
Přetypování - změna datového typu.
Komentáře.
Podmínka if.
Kódování znaků ASCII a UTF.

Datový typ char

dotový typ char reprezentuje jeden znak. Pro počítač ale znak není znakem ale pouze číslem. V jazyce Java se znak zapisuje do apostrofů (např. 'a'). A protože znak je vlastně číslo lze jej převést na číselný doatový typ. Lze s ním také provádět matematické operace.

char znak  = 'a';
System.out.println(znak);
System.out.println('a'+1);
System.out.println(1 < 'a');
System.out.println('a' - 'A');
System.out.println('z');
System.out.println((int)'z');

/********************************************
* Výpis
********************************************
a
98
true
32
z
122
*********************************************/

Přetypování - změna datového typu.

Jazyk Java musí mít u proměnné definovaný datový typ. Převést hodnotu z jednoho datového typu na jiný lze, někdy automatizovaně bez zásahu programátora jindy musíme Javě jednoznačně řícrt že cheme provést konverzi to v případě že by mohlo dojít ke strátě dat. Například pokud převádíme desetinné číslo na celé číslo, musíme to explicitně uvést aby si Java byla jistá, že jsme si vědomi rizika ztráty hodnoty za desetinnou čátkou.

Pro samotnou konverzi pak stačí uvést datový typ do závorek před hodnotu: (int)0.5

int celeCislo = 10;
double desetinneCislo = 5.28;
System.out.println("Cele cislo: " + celeCislo + " desetine cislo: " + desetinneCislo);
desetinneCislo = celeCislo;
System.out.println("Cele cislo: " + celeCislo + " desetine cislo: " + desetinneCislo);
desetinneCislo = 8.78;
System.out.println("Cele cislo: " + celeCislo + " desetine cislo: " + desetinneCislo);
celeCislo = (int)desetinneCislo;
System.out.println("Cele cislo: " + celeCislo + " desetine cislo: " + desetinneCislo);
System.out.println("Znak: " + 'R' + " cisalna hodota znaku: " + (int)'R');
desetinneCislo = Long.MAX_VALUE;
celeCislo = (int)desetinneCislo;
System.out.println("Cele cislo: " + celeCislo + " desetine cislo: " + desetinneCislo);


/*********************************************************
* Výpis
**********************************************************
Cele cislo: 10 desetine cislo: 5.28
Cele cislo: 10 desetine cislo: 10.0
Cele cislo: 10 desetine cislo: 8.78
Cele cislo: 8 desetine cislo: 8.78
Znak: R cisalna hodota znaku: 82
Cele cislo: 2147483647 desetine cislo: 9.223372036854776E18
*********************************************************/

Komentáře

Do kódu můžeme vkládat komentáře, které připrovádění budou ignorovány. Slouží nám lidem k zapsání poznámek co se v kódu dějě.

Máme dva typy komentářů:

  • řádková - kde text za // je až do konce řádku považován za kemntář
  • blokový/víceřádkový - kde text mezi kombinacem znaků /* a */ je považován za komentář i přes více řádků

Pro zakomentování kódu můžeme použít i zkratkové klávesy (na anglické klávesnici):

  • CTRL + / zakomentje nebo odkomentuje jeden řádek pomocí //
  • CTRL + SHICT + / zakomentuje označená blok kódu
//System.out.println("Nevypisu se jsem zakomentovany!");
// Ja nezpusobim chybu jsem zakonetovany

System.out.println(1+/*3+*/1);
//Vysledek bude 2 protoze 3 je zakoemntovana

System.out.println("Po mne je zacatek komentare pres vice radku");
/*
System.out.println("Nevzpisu se jsem zakomentovany!");
System.out.println("Nevzpisu se jsem zakomentovany!");
System.out.println("Nevzpisu se jsem zakomentovany!");
System.out.println("Nevzpisu se jsem zakomentovany!");
*/
System.out.println("zakomentovanz blok skoncil");

Podmínka if

Abychom mohly zajistit vykonání nějakého kódu jen za určitých podmínek potřebujeme příkaz if.

if( nejaka podminka ){
   kod ktery se ma vzkonat
}

Aby se daný blok kódu vyvolal musí být podmínka splněna. Musí se vyhodnotit jako pravdatda true.

int cislo = 45;
System.out.println(cislo < 78);
System.out.println(cislo == 45);
System.out.println(cislo != 45);
if(cislo < 78 ) {
System.out.println("Hodnota v promenne cislo je mensi nez 78.");
}
if(cislo == 45 ) {
System.out.println("Hodnota v promenne cislo je rovna cislu 45.");
}
if(cislo != 45 ) {
System.out.println("Hodnota v promenne cislo je ruyna od cisla 45.");
}

/***************************
* Vypis
****************************
true
true
false
Hodnota v promenne cislo je mensi nez 78.
Hodnota v promenne cislo je rovna cislu 45.
************************************/

Kódování znaků ASCII

ASCII je způsob jak jsou znaky uloženy v počítači. Každý znak je vlastně jen číslo a kažtému číslu je přiřazen jeden znak z tabulky ASCII aby počítač věděl jaký obrázek má zobrazit na monitoru.

ASCII obsahuje pouze 256 znaků (0-255). Jsou tam znaky anglické abecedy, čísla některé speciální znaky, chybí zude většina českých znaků.

System.out.println("Vypis znaku ASCII tabulky");
for (int i = 0; i < 256; i++) {
System.out.println("Cislo " + i + " reprezentuje znak '" + (char)i + "'");
}

Kódování znaků UTF

Aby bylo možno v počítači snadno použít i znaky z české abecedy nebo čínské znaky, byla vytvořeno kódování UTF. Toto kódování rozšiřuje ASCII o další znaky na celkový počet 65536 (0-65535). tento počet umožňuje reprezentaci všech znaků všech jazyků na celém světě a ještě zbívá místo.

System.out.println("Vypis všech znaků UTF v šesti sloupcích.");
for (int i = 0; i < 65536; i++) {
String s = String.format("%6d->'%c'\t", i, i);
System.out.print(s);
if (i % 6 == 0) {
System.out.println();
}
}