27. Poziv po vrijednosti u Javi (Call by Value)

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