This post will explain on how to manipulate Java pass-by-reference and java pass by value.
ByReference.java
package com.fluxion.mrcos.test;
public class ByReference {
private int x=100;
public void setX(int pX){
this.x=pX;
}
public int getX(){
return this.x;
}
}
ByValue.java
package com.fluxion.mrcos.test;
public class ByValue {
public static void main(String[] args){
int a=2,b=7;
ByValue bValue = new ByValue();
ByReference bRef = new ByReference();
System.out.println("a="+a+"; b="+b);
bValue.swapMe(a, b);
System.out.println("a="+a+"; b="+b);
System.out.println("================================");
bRef.setX(500);
System.out.println("By Reference X:"+bRef.getX());
bValue.chanceObject(bRef);
System.out.println("By Reference X:"+bRef.getX());
}
private void chanceObject(ByReference pByRef)
{
pByRef.setX(300); // change the value
}
private void swapMe(int x, int y){
int temp = x;
y=x;
x=temp;
}
}
Output When Running ByValue.java
a=2; b=7
a=2; b=7
========
By Reference X:500
By Reference X:300
Coclusion/Observation
Java is works on both By-Value and By-Reference however this will defends on the use. Is you pass a data, Java will tricks the paramater as Pass By-Value(See swapMe function), however if you pass a Object, it will treat the parameter as pass By-Reference(See chanceObject function)
No comments:
Post a Comment