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