HowTo:Úvodný príklad

Z Java.betlista.net

   Úplne najjednoduchšší program v Jave, je klasický príklad na vypísanie textu na štandardný výstup (na obrazovku).
   Príklady typu Hello world patria k základným príkladom, na ktorých sa ukazuje prvý príklad v danom programovacom jazyku. Táto tradícia vznikla, keď tvorcovia programovacieho jazyka C - Kernighan a Ritchie vydali svoju knihu o tomto jazyku (ktorá sa neskôr stala normou - K&R) a v nej sa objavil aj tento príklad.
   Aby som sa vrátil späť k Jave, tak tu je najzákladnejší príklad (vysvetlenie pod):

class HelloWorld {
   public static void main(String[] args) {
      System.out.println("Hello world!");
   }
}

   Všetko v tomto príklade je potrebné a neide to vynechať.
   Všetko v Jave je objekt (až na výnimky), preto aj to, čo vytvárate vy, ako programátor je objekt.
   Musím ešte urobiť malú odbočku kým budem pokračovať, odbočku, ktorá sa bude týkať rozdielov medzi objektom a inštanciou objektu. Nebudem zachádzať do detailov, pretože si nedávam za cieľ vysvetlovať tu princípy OOP. V skratke inštancia objektu už je to, čo zaberá miesto v pamäti (nemyslím na disku, tam máte väčšinu vecí), pričom objekt je len akási definícia - šablóna, ktorá hovorí o tom podľa čoho vytvoriť objekt a aké má mať vlastnosti.
   Druhým slovom je meno triedy (HelloWorld), zátvorka označuje, že už došlo k začiatku definície triedy (po mene triedy by ešte mohli byť kľúčové slová extends, implements a throws, ale o tom inokedy). Preťažili sme metódu main a Java VM (Virtual Machine) vie, že má vykonávanie začat spustením tejto metódy. Public znamená, že ju môžete zavolať odkiaľkoľvek, static znamená, že ju môžete volať aj bez inštancie danej triedy a void znamená, že metóda nevracia návratovú hodnotu. Potom z triedy System získate inštanciu triedy PrintStream a pomocou jej metódy println() vypíšete reťazec znakov (v našom prípade) na výstup.

   Nasledujúci príklad už je komplikovanejší, považoval som ho však za pomerne dôležitý, ak si chcete Javu vyskúšať viac. Príklad ukazuje ako načítať String (reťazec znakov) zo štandardného vstupu (konzole) a následne ho vypísať.
   Princíp je vskutku jednoduchý. Najprv si vypíšeme na štandardny výstup výzvu k tomu aby sme zadali reťazec (je to tiež dobré k tomu aby sme vedeli, že program už beží) a tento zadaný reťazec budeme následne čítať. Najpr si vytvoríme niečo do čoho vstup načítame - pole byte-ov. Aj keď je byte číslo, nebuďte vystrašení, stačí si uvedomiť, že všetko v počítači je reprezentované ako čísla (konkrétne 0 a 1) a práve teraz Vás nemusí zaujímať ako sa z týchto čisel stanú znaky. Potom už len použijete konštruktor String-u, ktorý berie ako parameter toto pole byte-ov a máte String.
   Je vhodná chviľa povedať si čo je to konštruktor. Konštruktor je špeciálna funkcia triedy, ktorá vytvorí inštanciu objektu. Trieda má často viac konštruktorov, ktoré majú rôzne parametre a často má aj tzv. bezparametrický konštruktor, ktorý nepotrebuje žiadne parametre (ako hovorí názov). Ešte sa rozlišuje tzv. copy-constructor a ten ako parameter berie inštanciu rovnakej triedy (ako tá, pre ktorú je konštruktorom) a vytvorí inštanciu zhodnú s tou, ktorá mu prišla ako parameter.
Konstruktor ktorý som použil pre vytvorenie String-u berie 3 parametre - pole byte-ov, offset a dĺžku stringu, ktorý má vytvorit. Offset (odsadenie) je počet prvkov poľa, ktoré sa majú vynechat. Dĺžka nemusí byť dĺžka poľa, ktoré sme si pre načítanie vytvorili, preto funkcia read() vracia počet byte-ov, ktoré sa jej podarilo načítať. (Len v rýchlosti spomeniem, že metóda vyhadzauje výnimku - exception, ak sa jej nepodarí čítať, preto je main metoda označená, že vyhadzuje výnimky - throws Exception ja s nimi v tomto priklade nič nerobím)
Na záver by som ešte upozornmil, že dĺžka Stringu, ktorý vytvoríte nemusí byť úplne taká, akú očakávate, preto ju na konci ešte vypisujem. Spôsobené je to tým, že keď zadávate vstup, tak ho ukončíte odriadkovaním (enterom), ale aj tieto znaky (vo windows sú to dva znaky) sa vám do vstupu dostanú.

package net.betlista.examples;

public class Read {

   /**
    * This class reads String from console.
    * @param args not used in this program
    */

   public static void main(String[] args) throws Exception {
      String word = null;
      System.out.print("Insert text: ");

        //create buffer for reading input to it
      byte[] buff = new byte[100];
      int length = System.in.read(buff);
      
      word = new String(buff, 0, length);
      System.out.println(word);
      System.out.println(word.length());
   }
}

   Keď už som tu rozoberal ako prečítať String tak asi bude fér, keď poviem ako prečítať číslo (celé aj reálne). Ako základ poslúži predchádzajúci príklad. V princípe prečítam String (ako predtým) a potom s ním niečo urobím.
V metóde readInt() tento String pomocou metódy parse() tzv. rozparsujem - metóda parse() za nás rozlúšti aké číslo sa "skrýva" v String-u a vráti nám už toto, číslo, ak toto číslo zadáte nesprávne, tak metóda hodí výnimku (NumberFormatException - čo je výnimka nesprávneho formátu čísla). Táto výnimka dedí od RuntiException a to znamená, že ju nemusíme odchytávať, alebo ďalej vyhadzovať. Podobne to spravíme pre reálne číslo.

package net.betlista.examples;

public class ReadAll {
   
   static String read() throws Exception {
      String word = null;
      System.out.print("Insert text: ");

      byte[] buff = new byte[100];
      int length = System.in.read(buff);
      
      word = new String(buff, 0, length);
      return word;
   }

   public static void main(String[] args) throws Exception {
      int i = readInt();
      double d = readDouble();
   }

   static int readInt() throws Exception {
      String s = read();
      return Integer.parseInt(s);
   }

   static double readDouble() throws Exception {
      String s = read();
      return Double.parseDouble(s);
   }
}


   Chcel by som Vás ešte vyzvať, aby ste dodržovali konvencie pri pomenovávaní a to tak, že meno triedy začína veľkým písmenom a mená metód a premenných začínajú písmenami malými. Samozrejme to nie je záväzné, ale je to príjemné, keď už podľa mena viete o čo sa jedná (v praxi som sa už stretol aj s tým, že Java VM-e vadila metóda pomenovaná veľkým písmenom).

   Na záver by som Vám chcel už len popriať veľa úspechov pri programovaní v Jave a nech sa Vám zapáči tak ako mne.

PS: Java sa číta ako džava a nie ako jáva.