Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Java
Platnost proměnné
java
2. září 2002, 00.00 | Víte jakým způsobem ovlivňují klíčová slova jako final či static platnost proměnné či její vlastnosti?
U deklarace jsem se zmiňoval o tom, že před typem proměnné mohou být ještě zmíněny klíčová slova jako public, private, static či final.
Tento díl našeho seriálu bych chtěl právě věnovat těmto a dalším klíčovými slovům, které ve směs souvisí s platností deklarované Proměnné..
Dříve než se podíváme na jednotlivá klíčová slova, musím připomenout, že základní vliv na platnost proměnné má její umístění v programu. Přesně řečeno její umístění vzhledem k begin a end ({ a }).
Tyto složené závorky neboli begin a end mají prostý význam. Označují vždy nějaký blok kódu a obecně platí, že deklarované proměnné platí pouze uvnitř tohoto a podřízených blocích tj. dalších blocích begin a end v něm vložených.
|
Podívejme se na to, co zobrazuje tento příklad. Na začátku je otevření bloku, slovem begin. Následuje deklarace proměnné i s následným vypsáním. Dále je to podmínka, která otevírá další blok (begin), v něm se opět vypíše i z čehož je vidět že i je stále platné . Následně deklarace a vypsání nové proměnné x. Ukončení druhého bloku pomocí end. Opět pokračuje prvně otevřený blok a i je podle výpisu stále platné. Zatímco při výpisu x zjistíte, že již není deklarováno (nelze to ani zkompilovat)!
Ale vraťme se k začátku článku, řekl jsem že před typem proměnné u deklarace se mohou vyskytovat klíčová slova:
- public
- private
- protected
- private protected
- final
- static
- transient
- volatile
|
Public je jedním ze tří klíčových slov (public, private a protected), které určují platnost proměnné uvnitř programu. Použitím slova public v deklaraci říkáte, že dané proměnná bude dostupná odkudkoliv z programu resp. odkudkoliv, kde bude dostupná třída, ve které se ona proměnné nachází.
|
Je dalším klíčovým slovem pro platnost Proměnné.. Uvedením jako private říkáte, že proměnná bude dostupná pouze uvnitř třídy tj. mezi class neco { ... }. Od jinud není viditelná ani není možno ji měnit, narozdíl od public.
|
Je poslední z řady klíčových slov s významem platnosti Proměnné.. Protected je hodně podobná private, také takováto proměnná je dostupná pouze ve vlastní třídě, ale navíc oproti private je také dostupná v podtřídách resp. balíku jehož je součástí.
|
Poslední možností, která se týká platnosti je kombinace předešlých dvou klíčových slova a to private a protected. Srovnáme-li si charakteristiky obou slov, pak výsledek v podobně obou slov se chová tak, že proměnná je dostupná jak ve své třídě, tak v podtřídách, ale již není dostupná ve vlastním balíku.
|
Je prvním z řady klíčových slov, které se týkají způsobu platnosti Proměnné.. Proměnné deklarovaná jako final má to specifikum, že její hodnota nelze změnit. Jinak řečeno jde o konstantu, ty se podle konvence často zapisují velkými písmeny.
|
Asi bych se měl opravit, hodnotu konstanty lze pouze jednou nastavit tzn. hodnota konstanty může být přiřazena až několik řádků po její deklaraci. Není tedy podmínkou, že by musela být přiřazena již při deklaraci.
|
Static se vztahuje k třídám a objektům. V podstatě v sobě obsahuje způsob jak sdílet Proměnné.. Příklad vytvoříme si třídu pes a v ní deklarujeme proměnou pocet_nohou a to jako static. Vytvoříme-li objekt pes_1 a pes_2 podle naší třídy pes, pak změníme-li statickou proměnou např. u pes_1, pak se tím změní i tato proměnná u objektu pes_2. Platí o obráceně.
|
Zatímco kdyby ve třídě pes nebylo uvedena proměnná pocet_nohou jako static, tak její změna u objektu pes_1 či pes_2 nemá vliv na žádný jiný objekt.
Jak to pracuje? Vytvoříme-li ve třídě nestatickou proměnou, pak se v paměti alokuje (přiřadí jí) nové místo v paměti každá takováto proměnná má svoje vlastní místo. Zatímco při deklaraci jako static se při vytvoření přiřadí proměnné vždy stejná adresa v paměti. To má za následek, že tato proměnná jakéhokoliv objektu odkazuje na stejné místo (hodnotu) a její změna změní její hodnotu všem objektům dané třídy.
TransientToto klíčové slovo podporuje snad až Java 2 verze 1.4. Při deklaraci nějaké proměnné jako transient říkáte, že tato proměnná není trvalou součástí objektu, metody a je pouze dočasného charakteru, Java ji tedy neukládá na disk.
|
Toto klíčové slovo má zamezit kompilátoru Javy aby při kompilaci zdrojového kódu s touto proměnou mohl provést optimalizaci. Ta se provádí standardně. Možné použití se rýsuje v programu, který je více threadový. Optimalizace by zde mohla způsobit, že se vám vrátí špatná hodnota proměnné, jestliže byla proměnná změněna.
|
Zmíněné zdrojové kódy. (2 kB)
Obsah seriálu (více o seriálu):
- Posezení u šálku kávy
- Komentáře
- Datové typy v Javě
- Operace s datovými typy
- Platnost proměnné
- Podmínky
- Cykly
- Break a continue
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007