asked on
The following code shows that even after a call to manipulate(), the value contained in variable c is unaltered - it is still holding a reference to
a Circle object of radius 2. If Java was [sic] a pass-by-reference language, it would instead be holding a reference to a radius 3 Circle:
public void manipulate(Circle circle){ circle = new Circle(3); } Circle c = new Circle(2); manipulate(c); System.out.println("Radius: "+ c.getRadius());
class RefDemo {
Circle c;
public int /*void*/ manipulate(Circle circle){
circle = new Circle(3);
return circle.getRadius();
}
public RefDemo(){this.c = new Circle(2);}
public static void main(String[] args){
RefDemo rd = new RefDemo();
System.out.println("Radius:"+(rd.manipulate((rd.c))));
System.out.println("Radius: "+ rd.c.getRadius());
}
public class Circle {
private int radius;
public Circle(int r){
this.radius = r;
}
public int getRadius(){return this.radius;}
}
}