Programování v jazyce Java

Kurz programování v Javě - 3. díl

 Úvodem  |  Kurz programování v Javě  |  Soubory ke stažení  |  Otázky a odpovědi

 

Datové typy - pokračování

Dnes budeme pokračovat dále ve výkladu o datových typech

Znakový typ

V javě jsou znaky reprezentovány dvěma byty, což je oproti většině jiných jazyků rozdíl. Java používá kódování znaků Unicode. Unicode je velká sada znaků, pokrývající snad všechny jazyky na světě. Jak jsem již řekl, tak char zabírá dva byty, takže má rozsah od 0 do 65535. Znakový sada ASCII ze začátku využívala 7 bitů a později byla rozšířena na 8 bitů. Unicode má začátek (0 - 255) stejný jako ASCII, proto není problém převod ASCII na Unicode, protože znaky ASCII jsou v Unicode platné, jen potom zabírají 2 byty.

Znakový typ char
Rozsah Zabírá v paměti
0 až 65535 16 bitů

Proměnné typu char můžeme přiřadit hodnotu buď číslem, nebo znakem uzavřených v jednoduchých uvozovkách.
Deklarace proměnné typu char
char znak = 72; Číslo může být v rozsahu uvedeném v tabulce.
char jinyZnak = 'k'; Zde přiřazujeme přímo znak, který požadujeme.

Logický typ

Typ boolean nabývá pouze dvou hodnot, true (pravda a logická 1) nebo false (nepravda a logická 0). Pravděpodobně zabírá celý byte paměti, i když by vlastně nemusel. Boolean se používá v logických výrazech. Není to číselný typ, proto nelze mu přiřazovat hodnoty 0 a 1, ale pouze klíčová slova true nebo false.

Logický typ boolean
Rozsah Zabírá v paměti
true a false (logická 0 a 1) 8 bitů - pravděpodobně

Přetypování

Pokud chcete proměnnou typu byte přiřadit proměnné typu int, není to problém, proběhne tzv. automatické přetypování. Př.:

Automatické přetypování
byte maleCislo = 72; Deklarace proměnné typu byte.
int velkeCislo = maleCislo; Proměnná velkeCislo je typu int a zkopírovala se do ní hodnota z proměnné maleCislo. Zde proběhla automatická konverze, která proběhne vždy, když se přiřazuje proměnná menšího rozsahu proměnné většího rozsahu.

Následující tabulka ukazuje, který typ na který se automaticky přetypuje:

Automatické přetypování
byte   --> short   --> int   --> long   a float   --> double

Samozřejmě lze char přetypovat na int a výše, boolean nelze vůbec přetypovat, ani mu přiřazovat jakékoli jiné hodnoty než true/false.

Pokud chceme přetypovat větší datový typ na menší, musíme použít operátor přetypování. Automatické přetypování zde nefunguje, protože může dojít ke ztrátě hodnoty.

Operátor přetypování
short s = 50;
byte b;
b = (byte) s; Použili jsme operátor přetypování k přetypování short na byte.

Program využívající všech jednoduchých datových typů

Zdrojový kód programu SouhrnPTypy.java
public class SouhrnPTypy {
  public static void main(String[] args) {
    byte b, c; /* Možná je také deklarace více proměnných na jednom řádku. */
    b = 10;
    c = 5;
    short s = 20;
    int i = 450;
    long l = 500l;
    float f = 15.75f;
    double d = 42.26;
    char ch = 'K';
    boolean bool = true;
   
    int soucetSI = s + i;
    int podilBC = b / c;
    d = d * f;
    // s = l; // odkomentujte a zkuste přeložit
    s = (short) l; // využití operátoru přetypování
    ch = (char) (ch + 5); // zde jsme ho také použili, ale proč, to si vysvětlíme příště
   
    /* Následující příkazy vypíší do konzole výsledky */
    System.out.println(soucetSI);
    System.out.println(podilBC);
    System.out.println(d);
    System.out.println(s);
    System.out.println(ch);
    System.out.println(bool);
  }
}

Na prvních osmi řádcích jsme deklarovali a inicializovali všechny přimitivní datové typy v Javě. U reálných čísel musíte, pokud chcete typ float napsat za číslo písmeno f, protože reálná čísla jsou implicitně typu double. Podobně je to i u čísel typu long , kde se píše písmeno l, ale když jsem program překládal bez l, překladači to nevadilo, ale vždy ho pište. Když budete volat metodu s parametrem typu float, nebo long, musíte napsat např.: 123f, nebo 224l, jinak program nepůjde přeložit. Na dalších pěti řádcích jsou různé matematické operace a operátor přetypování. Na následujících šesti je výpis různých proměnných do konzele. Doufám, že budete s tímto programem různě experimentovat, aby vám bylo vše jasné.

 

Závěr

To je vše v dnešním díle, v příštím budou vysvětleny operátory a možná i něco dalšího.

 

Alen Dvořák