Programovací jazyk Java umožňuje použití metod stejně jako C/C++.
Deklarace metody má následující tvar:
modifikátor typ_návratové_hodnoty jméno_metody (deklarace_proměnných)
{ tělo_metody }
Zpracování programu aplikace začíná voláním metody main() a končí opuštěním této metody. Každá metoda musí vracet návratovou hodnotu typu typ_návratové_hodnoty. Hodnota je z funkce předána pomocí příkazu return(hodnota)
Výjimku tvoří metody typu void, kt. nevrací žádný výsledek. Tyto metody nazýváme spíše procedurami. U těchto procedur není příkaz return nutný, ale dá se použít pro nucené ukončení metody před dosažením jejího konce. Rekurzivní metoda = metoda, kt. volá sama sebe.
int maximum (int a, int b)
{
if (a > b)
return(a);
else
return(b);
}
public static long fakt(long n) {
if (n>1)
return n*fakt(n-1);
else return 1;
}
Volání metody v Javě se uskuteční příkazem
jméno_metody (argumenty);
Příklad volání metody maximum:
vysledek = maximum (10, 20); // funkce ulozi hodnotu 20 do vysledek
Rozsah platnosti metody, definuje oblast programu, ve které je metoda přístupná (je ji možné volat). Jakmile vytvoříme v Javě metodu, je tato metoda přístupná pouze ve třídě, v níž byla metoda definována. To znamená, že program nemůže volat metody z jiné třídy. Rozsah platnosti funkcí je možné měnit (určovat) pomocí modifikátorů:
• public - je viditelná všude, kde je viditelná třída, v které je metoda definovaná
• private - je viditelná pouze ve své třídě
• static - z metody nejsou odvedeny žádné další objekty
• protected - je viditelná pouze ve své třídě a v jejích podtřídách a nebo v danném balíku
Přetěžování metod pomáhá k dobré přehlednosti kódu a navíc řeší problémy, které by bez možnosti přetěžování nebyly řešitelné vůbec. S metodami pracujete pomocí názvů a kvůli čitelnosti kódu se snažíte (nebo alespoň byste měli) názvy metod co nejvíce přiblížit jejich funkcím. Lepší je použít pouze jednu metodu a tu přetížit. Systém pak sám pozná, o kterou variantu se jedná a použije tu možnost, která je správná. Provedeme to tak, že vytvoříme dvě stejně pojmenované metody, ale s jinými parametry.
Pole je datová struktura, která sdružuje daný počet prvků buď v jednom, ve dvou nebo třech rozměrech, kdy každý prvek má svůj index.
3D pole: | int[][][] PoleA = new int [10][8][15]; |
Nejprve je třeba zvolit datový typ (String, double, int…) pro celé pole hodnot. Poté je třeba určit kolikarozměrné pole chceme vytvořit. Následuje jméno pole, po té přiřadíme každému rozměru hodnotu. (počet jednotlivých prvků pro každý rozměr). V tomto případě se jedná trojrozměrné pole s celkem 1200 prvky. (3D pole si můžeme představit jako kvádr o hranách 10, 8 a 15 prvků.)
1D pole: | for (int i = 0; i < PoleA.lenght; i++) { System.out.println("Hodnota na pozici [" + (i + 1) + "]: " + PoleA[i]); } |
|
3D pole: | for (int i = 0; i < PoleA.lenght; i++) { for (int j = 0; j < PoleA.lenght; j++) { for (int k = 0; k < PoleA.lenght; k++) { System.out.println("Hodnota na pozici [" + (i + 1) + ", " + (j + 1) +", " + (k+ 1) + "]:" + PoleA[i][j][k]); } } } |
|
2D pole: | for (int i = 0; i < PoleA.lenght; i++) { for (int j = 0; j < PoleA.lenght; j++) { System.out.println(Hodnota na pozici [" + (i + 1) + "," + (j + 1) + "]: " + PoleA[i][j]); } } |
Při výpisu z pole využijeme cyklu for, v tomto případě vnořeného, potřebuje totiž vypsat pole dvojrozměrné. V případě 3D pole bychom ještě jeden vnořený cyklus přidali (samozřejmě, že každý cyklus bude postupně měnit jiný index). Tímto docílíme toho že program postupně projde celé pole od začátku do konce, to můžeme využít např. pro zápis a výpis z pole. Samozřejmě, že nemusíme procházet pole celé, je na nás, jak podmínku cyklu nastavíme.
Jako index pole však nemusí sloužit pouze obyčejná proměnná, může to být také např. vstup z klávesnice, metoda co vrací hodnotu nebo prvek jiného pole.
Pomocí členské proměnné „Nazevpole.length“ můžeme kdykoliv vrátit hodnotu délky pole.