Java - Přiřazování a přetypování (9.díl)

Napsal O webu (») 25. 11. 2007 v kategorii Programování, přečteno: 11080×
obrazky/java_logo.png

Přiřazování a přetypování

Přiřazovací příkaz je používán při práci s proměnnými i konstantami. Operátorem přiřazení je znak =, operátor == představuje relační operátor je rovno. Přiřazovací příkaz umožňuje přiřadit hodnotu nějakého výrazu jiné proměnné nacházející se vlevo od operátoru =. Výraz, který do proměnné přiřazujeme, musí mít nějakou hodnotu.

a=10.0;
b=c+15*f;
znak='A';

Přiřazovací příkaz může být používán i při tvorbě logických podmínek. Začátečníka by neměla zmást následující konstrukce

if (a==(b=10));
představující dotaz, zda hodnota proměnné a je rovna hodnotě proměnné b,která je inicializována na 10.
Při přiřazovacích operacích dochází často ke konverzím mezi různými datovými typy. Tyto operace nazýváme přetypováním. Výsledkem přiřazení je změna datového typu proměnné. Existují dva typy přetypování:
  • Implicitní konverze: Vzniká při přetypování proměnné s nižším rozsahem na proměnnou s vyšším rozsahem. Probíhá automaticky bez nutnosti zápisu jakéhokoliv programového kódu. Nedochází při ní ke ztrátě informací.
    Pro jinde uvedené datové typy bývá prováděna v následujícím pořadí:
    byte->short->int->long->float->double.

    float a=50;
    double b=30;
    b=a;//implicitní konverze

  • Explicitní konverze: Vzniká při přetypování proměnné s vyšším rozsahem na proměnnou s nižším rozsahem. Konverze neproběhne automaticky (může při ní dojít k snížení přesnosti dat), je tedy nutno vynutit ji tzv. ručně uvedením výsledného datového typu. Při explicitní konverzi dochází zpravidla ke ztrátě informací. Bývá prováděna v následujícím pořadí:
    double->float->long->int->short->byte.

    a=b;//ztráta přesnosti, nelze provést
    a=(float)b;//explicitní konverze

    Přetypování lze používat u OOP také při práci s rodičovskou a odvozenou třídou. Objekt rodičovské třídy označíme rodič, objekt odvozené třídy potomek. Potomek bývá zaměřen úžeji než rodič. Existují dvě možnosti přetypování:

  • Přetypování z potomka na rodiče: implicitní konverze

  • Přetypování z rodiče na potomka: explicitní konverze

    Podrobněji se s nimi seznámíme v kapitole věnované objektově orientovanému programování. Podívejme se na situace, kdy do aritmetických operací vstupují operandy smíšeného typu, hovoříme pak o tzv. smíšených výrazech. Platí následující zákonitosti:

    1. Pokud je jeden z operandů typu double, bude výsledkem operace datový typ double

    2. Pokud je jeden z operandů typu oat, bude výsledkem operace datový typ oat

    3. Pokud je jeden z operandů typu long, bude výsledkem operace datový typ long

    Jejich cílem je realizace aritmetických operací tak, aby při nich došlo k co nejmenší ztrátě přesnosti. Pozor musíme dát u výrazů obsahujících zlomky, pokud čitatel i jmenovatel představují celočíselné hodnoty. Výsledek operace bude opět datového typu int.

    int a=5;//int
    int b=10;//int
    int c=a/b;//výsledek=0

    Výše uvedený zápis je z formálního hlediska špatným, neměl by být nikdy použit.
    Správný je následující zápis, při kterém vznikne smíšený výraz:

    int a=5.0;//double
    int b=10;//int
    int c=a/b;//výsledek=0.5;

    Autor: Filip Koval
  • Štítky: Java
    Facebook Twitter Topčlánky.cz Linkuj.cz

    Komentáře

    Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
    Článek ještě nebyl okomentován.


    Nový komentář

    Téma:
    Jméno:
    Notif. e-mail *:
    Komentář:
      [b] [obr]
    Odpovězte prosím číslicemi: Součet čísel tři a šest