Poziv po vrednosti u Javi (Call by Value)

U Javi postoji samo poziv po vrednosti, ne i poziv po referenci. Ako pozovemo metod koji prosleđuje vrednost, to je poznato kao poziv po vrednosti. Promene se dešavaju u pozvanom metodu, ne obuhvataju pozivajući metod. Primer poziva po vrednosti u Javi U slučaju poziva po vrednosti izvorna vrednost nije promenjena. Pogledajmo jednostavan primer:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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
 Primer 2  poziva po vrednosti u Javi U slučaju poziva po referenci izvorna vrednost se menja ako mi načinimo promene u pozvanom metodu. Ako prosledimo objekat umesto neke primitivne vrednosti, izvorna vrednost će biti promenjena. U ovom primeru prosleđujemo objekat kao vrednost. Pogledajmo jednostavan primer:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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); //prosleđuje objekt 
  System.out.println("after change "+op.data); 
  
 
}
Ispis na ekranu:
before change 50
after change 150

Comments

comments