Valmiin aliohjelman kutsuminen on helppoa: etsitään aliohjelman esittely ja kirjoitetaan kutsu, jossa on vastaavan tyyppiset parametrit vastaavissa paikoissa.
Esimerkiksi funktion Math.sin esittely saattaa olla muotoa:
sin public static double sin(double a) Returns the trigonometric sine of an angle. Special cases: - If the argument is NaN or an infinity, then the result is NaN. - If the argument is zero, then the result is a zero with the same sign as the argument. A result must be within 1 ulp of the correctly rounded result. Results must be semi-monotonic. Parameters: a - an angle, in radians. Returns: the sine of the argument.
Funktion tyyppi on double ja sille viedään double tyyppinen parametri. Funktio ei muuta mitään parametrilistassa esiteltyä parametriaan (mistä tietää?). Siis funktiota ei ole mitään mieltä kutsua muuten kuin sijoittamalla sen palauttama arvo johonkin muuttujaan tai käyttämällä funktiota osana jotakin lauseketta. x:ää vastaava parametri voi olla mikä tahansa double tyyppisen arvon palauttava lauseke (tietysti mielellään sellainen joka tarkoittaa kulmaa radiaaneissa):
double kulman_sini,a,b,x,y; ... kulman_sini = Math.sin(x); ... y = Math.sin(x/2) + Math.cos(a/3); ...
Funktiota voitaisiin tietysti kutsua myös muodossa:
double x = 3.1; Math.sin(x); :-(
mutta kutsussa olisi yhtä vähän järkeä kuin kutsussa
double x=3.1; x + 3.0; :-(
tai jopa
3.0; :-(
Mihin lausekkeiden arvot menisivät? Eivät minnekään! Tosin Javassa kääntäjäkään ei päästä lävitse kahta viimeksi mainittua vaihtoehtoa, eli pelkää vakioita tai muuttujia sisältävää lauseketta, jota ei sijoiteta mihinkään.
Usein aloittelijan näkee yrittävän kutsua muodoissa
y = double Math.sin(double a); y = Math.sin(double a)
mutta näissäkään ei ole järkeä, koska parametrin tyypin esittely kuuluu vain aliohjelman otsikon puoleiseen päähän, ei kutsupäähän.