Izpitno vprašanje RAČ2PRA 900

Iz MaFiRaWiki

Vprašanje

Razloži način prenosa spremenljivk pri klicu metod, lokalnost ... Glej primer

Odgovor

Dana je koda razreda Povecaj:

  1. public class Povecaj {
  2. public void povecaj (int a) {
  3. a++;
  4. }
  5. public void povecaj(int[] a) {
  6. for(int i =0; i < a.length; i++)
  7. a[i] += 2;
  8. }
  9. }
  • Ali je v kodi kakšna napaka? Če je, jo odpravi!
Ni napake.
  • Kaj izpiše sledeča koda (kode razreda Povecaj nismo spremenili)?

  1. Povecaj inc = new Povecaj ();
  2. int a = 5;
  3. int[] b = {5};
  4. inc.povecaj (a);
  5. inc.povecaj (b);
  6. System.out.println("a = " + a);
  7. System.out.println("b = " + b[0]);

Izpiše:

a = 5

b = 7

Pri klicu metode povecaj(a), se prenese vrednost parametra. Kar se dogaja s parametri v metodi, se na spremenljivkah, uporabljenih ob klicu , ne pozna.

Pri klicu metode povecaj(b), se prenese vrednost parametra, ki je naslov tabele. Kar se dogaja z elementi tabele a v metodi povečaj, se bo poznalo na elementih tabele b. Ker ob klicu tabela a začne kazati na naslov tabele b. V primeru, da bi tabela a v metodi pokazala na neko drugo tabelo, potem bi tabela b ostala nespremenjena.

Osebna orodja