![]() |
Programování v jazyce JavaKurz programování v Javě - 10. díl |
||||||||||||||||||||||||
Úvodem | Kurz programování v Javě | Kurz programování v Javě pro mobilní telefony | Soubory ke stažení | Otázky a odpovědi |
|||||||||||||||||||||||||
Úvod V minulém díle jsme probírali pole, ale neřekli jsme si nic o jejich kopírování, dnešním díle to napravíme. Kopírování polí Pokud chceme jedno pole zkopírovat do jiného, nelze použít operátor přiřazení, protože by se nezkopírovaly jednotlivé prvky, ale pouze odkaz na pole. To znamená, že by byly dva odkazy na stejné pole, měnit prvky bychom mohli oběma odkazy a zároveň pokud bychom pole změnili přes jeden odkaz, druhý odkaz by odkazoval na to samé pole, to změněné přes první odkaz. Následující ukázka tento případ demonstruje
Na prvních dvou řádcích jsme deklarovali dvě pole, pole a typu int a pole b také typu int. Dále jsme pole a inicializovali 4 hodnotami. Potom jsme proměnné b přiřadili odkaz na pole. Teď obě proměnné odkazují na stejné pole, což dokazuje následující řadek na kterém se 2. hodnotě pole a přiřadí hodnota 50 a nakonec necháme vypsat druhou hodnotu pole b, která je také 50. Toto chování je sice logické, ale nemusí být na první pohled zřejmé. Jak tedy zkopírovat jednotlivé prvky pole?
Pomocí cyklu for se zkopírují jednotlivé prvky jednoho pole do pole druhého. Nemusí se používat jen cyklus for, jde to i pomocí while cyklu. Další zajímavostí je kopírování vícerozměrného pole, v našem příkladu to bude pole dvourozměrné, ale neměl by být problém podle tohoto příkladu odvodit i pole o více rozměrech než jsou dva. Teď již slíbený příklad:
Myslím, že příklad nepotřebuje dalšího vysvětlování. Pokud vám na tom není něco jasné, zkuste si pole sami naplnit čísly a nechte si je v každé smyčce vypisovat na konzoli pomocí metody System.out.println(). Kopírování polí pomocí metody System.arraycopy() Použití metody arraycopy() je jednoduché a všechnu práci udělá za vás. Následujíc příklad ukazuje jak metodu arraycopy() použít.
Prvním argumentem metody arraycopy() je proměnná obsahující pole, které chceme kopírovat. Druhým argumentem je číslo typu int a určuje od kterého prvku pole ho chceme kopírovat. Dalším třetím argumentem je zase proměnná typu pole, která odkazuje na pole, které chceme naplnit prvky z prvního pole. Přeposledním argumentem je znovu číslo typu int, které určuje první prvek od kterého se začnou hodnoty z prvního pole kopírovat. Posledním argumentem je opět číslo typu int, kterým určíme počet prvků ke zkopírování. V dalším příkladu můžete vidět využití argumentů s nenulovými hodnotami, které znamenají, že se první pole kopíruje od začátku, do druhého které, se naplňuje od začátku.
Zatím jsme si ukázali použití metody arraycopy() pouze při kopírování jednorozměrného pole. Podívejte se na následující příklad.
Při takovém použití metody arraycopy() na vícerozměrná pole vznikne stejná situace jako když použijeme ke zkopírování jednorozměrné pole operátor přiřazení =. Pouze se zkopírují odkazy na jednotlivé řádky dvourozměrného pole. Proto, pokud chceme použít metodu arraycopy() na více rozměrná pole musíme použít nějaký cyklus (nebo cykly), stejně jako ukazuje následující příklad.
Na závěr dílu jsem připravil příklad, který ukazuje kopírování trojrozměrného pole :-).
Závěr Dnes jsme probrali kopírování polí, možná to není nejpodstatnější věc při programování, ale určitě se bude hodit a mnohokrát ji využijete. Obsah příštího dílu bude překvapením :-). Pokud by někdo chtěl probrat nějaké téma, které se neprobíralo a pravděpodobně probírat nebude, napište mi a já ho zařadím. |
|||||||||||||||||||||||||