Favicon Svetmobilne.cz  Svět mobilně Favicon Svetaudia.cz  Svět audia Favicon TVFreak.cz  TV Freak   Fórum Favicon Digimanie.cz  Digimanie   Fórum   Galerie
Zobrazené výsledky: 1 až 8 z 8

Téma: Java - dotazy

  1. #1
    Čestný člen Avatar uživatele P@pi
    Registrace
    May 2006
    Příspěvků
    1,688

    Do tohoto threadu pište dotazy směřující na programovací jazyk Java.

    Protože studuji IT na vejšce v ČB, patří do mého repertoáru povinných předmětů i programování v Javě. A jelikož se mi nechce lézt na jiné fórum a vím, že jsou tu lidé, kteří programování rozumí, tak mám jeden strašně tvrdý oříšek.

    Kód:
    private static final Random generator = new Random();
    Nemůžu nikde najít co znamená static. Prosím link na nějaký inteligentně sepsaný kus textu nebo ideálně vysvětlení. Netuším totiž rozdíl mezi statickou final a pouze final proměnnou. Co tedy přesně dělá toto klíčové slovo?
    Odpovídat lze po přihlášení

  2. #2
    Starousedlík SHW
    Registrace
    Jul 2006
    Příspěvků
    1,011

    Ve stručnosti to znamená, že tato konstanta bude existovat vždy bez ohledu na to, jestli byla vytvořena třída, která ji obsahuje přes new ... je to užitečné u konstant a pomocných metod, kterým jsou předány pouze parametry a neodkazují se na žádné nestatické objekty třídy (typicky různé pomocné funkce).
    Vysvětlení se najít dá, přes google: java static, nebo přes torrent stáhnout nějaké obecné knížky o Javě.

    Náhodně nalezené vysvětlení:
    Static methods use no instance variables of any object of the class they are defined in. If you define a method to be static, you will be given a rude message by the compiler if you try to access any instance variables. You can access static variables, but except for constants, this is unusual. Static methods typically take all they data from parameters and compute something from those parameters, with no reference to variables. This is typical of methods which do some kind of generic calculation. A good example of this are the many utility methods in the predefined Math class. (See Math and java.util.Random).
    Odpovídat lze po přihlášení



  3. #3
    Starousedlík SHW Avatar uživatele Intri
    Registrace
    Sep 2007
    Příspěvků
    3,519

    Snad to nespletu, nejsem si tím úplně jistý, ale mám dojem, že to slouží k tomu, aby daná proměnná/metoda byla v dané třídě unikátní pro všechny instance. Když budeš mít třeba třídního člena a zadefinovaného bez staticu, každá instance si ho může nastavit podle sebe. Pokud z něj uděláš static, budou mít všechny instance v této proměnné stejnou hodnotu.

    Takže příklad:

    Třída člověk, nestatický třídní člen "barva_pleti". Dvě instance: P@pi a Intri. P@pimu nastavíš barvu pleti na bílou, Intrimu na černou. To jde v pohodě. Teď, když změníš člen "barva_pleti" na static, stane se to, že když P@pimu nastavíš barvu na bílou, Intriho vymaluješ taky na bílo, nehledíc na to, jak moc barevný byl předtím.

    P.S.: Všechny postavy jsou smyšelné, jakákoliv podobnost s existujími postavami je čistě náhodná.

    EDIT: Hmm, tak podle výkladu od Pavla si to pletu... Tak nic. Ale teď by mě zajímalo, jestli mám nějak pokroucenou paměť, nebo si tohle pletu s jinou vlastností.
    Odpovídat lze po přihlášení

  4. #4
    Čestný člen Avatar uživatele P@pi
    Registrace
    May 2006
    Příspěvků
    1,688

    Ten anglický originál mi dává celkem smysl. Díky, asi neumím hledat :-).
    Odpovídat lze po přihlášení

  5. #5
    Starousedlík SHW
    Registrace
    Jul 2006
    Příspěvků
    1,011

    Citace Původně odesláno od Intri Zobrazit příspěvek
    Snad to nespletu, nejsem si tím úplně jistý, ale mám dojem, že to slouží k tomu, aby daná proměnná/metoda byla v dané třídě unikátní pro všechny instance. Když budeš mít třeba třídního člena a zadefinovaného bez staticu, každá instance si ho může nastavit podle sebe. Pokud z něj uděláš static, budou mít všechny instance v této proměnné stejnou hodnotu.

    EDIT: Hmm, tak podle výkladu od Pavla si to pletu... Tak nic. Ale teď by mě zajímalo, jestli mám nějak pokroucenou paměť, nebo si tohle pletu s jinou vlastností.
    Myslím, že se toto nevylučuje, proměnou static jsem však asi nikdy nepoužil.
    Tvoje vysvětlení je určitě správné pro C, kde se proměnné static chovají tak, že existují po celou dobu existence programu a jejich hodnota zůstává zachována i po opuštění a dalším volání funkce. V Javě static používám pro konstanty a metody, které pak lze použít i když třída nemá žádnou instanci.

    EDIT: souhlasím se svým i Intriho výkladem, nejsou nekompatibilní
    Naposledy upraveno uživatelem pavel_p: 27-01-2008 v 20:20
    Odpovídat lze po přihlášení

  6. #6
    Redaktor SHW / Digimanie Avatar uživatele Milan Šurkala
    Registrace
    May 2006
    Příspěvků
    174

    V Javě jsem už nějaký ten pátek neprogramoval, ale souhlasil bych s výkladem Intriho. Vím, že jsem někdy něco podobného potřeboval a tím static vlastně nastavíš dané proměnné jediné pevné místo v paměti, v podstatě nějaká globální proměnná. Ale nechci tady mystifikovat, už si to vážně nepamatuju. To by ze mě měli ve škole radost :-)
    Odpovídat lze po přihlášení

  7. #7
    Starousedlík SHW Avatar uživatele Intri
    Registrace
    Sep 2007
    Příspěvků
    3,519

    Citace Původně odesláno od pavel_p Zobrazit příspěvek
    Myslím, že se toto nevylučuje, proměnou static jsem však asi nikdy nepoužil.
    Tvoje vysvětlení je určitě správné pro C, kde se proměnné static chovají tak, že existují po celou dobu existence programu a jejich hodnota zůstává zachována i po opuštění a dalším volání funkce. V Javě static používám pro konstanty a metody, které pak lze použít i když třída nemá žádnou instanci.

    EDIT: souhlasím se svým i Intriho výkladem, nejsou nekompatibilní
    Jo, vidíš to, Cčko, to je ono... S ním si to pletu. Nám o tom říkali na střední, tak mi to utkvělo v paměti, a teď jsem nevěděl, jestli to nevím náhodou už z vysoké z prvního semestru.
    Odpovídat lze po přihlášení



  8. #8
    eraser

    Pozor, nemýlte si kľúčové slovo static a jeho významy v OOP a klasickom procedurálnom C jazyku (K&R C, ANSI C).
    Odpovídat lze po přihlášení

Podobná témata

  1. java navigace
    Od esetik v sekci Problémy s PC (HW/SW) a řešení
    Reakcí: 1
    Poslední příspěvek: 10-03-2011, 20:05
  2. JAVA - Netbean - obrázek
    Od petr.svec v sekci Programování
    Reakcí: 1
    Poslední příspěvek: 16-02-2010, 20:25
  3. NullPointerException in Java
    Od Wlcek v sekci Programování
    Reakcí: 8
    Poslední příspěvek: 13-05-2009, 03:28
  4. Tutorial k Java-Scriptu
    Od panpelisek v sekci Programování
    Reakcí: 5
    Poslední příspěvek: 14-11-2008, 20:50
  5. ProjectX a Java nefunguje
    Od Elvis77 v sekci OS Windows
    Reakcí: 2
    Poslední příspěvek: 13-07-2007, 07:48