U Javi postoji samo poziv po vrijednosti, ne i poziv po referenci. Ako pozovemo metod koji prosljeđuje vrijednost, to je poznato kao poziv po vrijednosti. Promjene se dešavaju u pozvanom metodu, ne obuhvataju pozivajući metod.
Primjer poziva po vrijednosti u Javi
U slučaju poziva po vrijednosti izvorna vrijednost nije promijenjena. Pogledajmo jednostavan primjer:
class Operation{ int data=50; void change(int data){ data=data+100; //promjene će biti samo u lokalnim varijablama } public static void main(String args[]){ Operation op=new Operation(); System.out.println("before change "+op.data); op.change(500); System.out.println("after change "+op.data); } } Ispis na ekranu: before change 50 after change 50
Primjer 2 poziva po vrijednosti u Javi
U slučaju poziva po referenci izvorna vrijednost se mijenja ako mi načinimo promjene u pozvanom metodu. Ako proslijedimo objekt umjesto neke primitivne vrijednosti, izvorna vrijednost će biti promijenjena. U ovom primjeru prosljeđujemo objekt kao vrijednost. Pogledajmo jednostavan primjer:
class Operation2{ int data=50; void change(Operation2 op){ op.data=op.data+100; //promjene će biti u instansnoj varijabli } public static void main(String args[]){ Operation2 op=new Operation2(); System.out.println("before change "+op.data); op.change(op); //prosljeđuje objekt System.out.println("after change "+op.data); } } Ispis na ekranu: before change 50 after change 150
Objektno orijentisano programiranje u Javi Index