/home/wpollock1/public_html/Java/ParamPassingDemo.java
/** This class demonstrates parameter passing in Java.
* Here a primitive (int) and an object (Person) are passed to aMethod.
* The results show that num is unchanged as a result of the method call
* but the object "wayne" had it's name property changed.
*
* This happens because Java uses "pass by copy" (or "pass by value").
* That means the "actual" parameters in the method call are copied into
* "formal" parameters, which are distinct variables. So changing "i" has
* no effect on "num".
*
* With objects, remember that it is *not* the object that is passed and
* copied, is is merely a reference to it. So if aMethod were to change "p",
* that would have no effect on "wayne", but if aMethod were to change the
* object's properties that both "p" and "wayne" refer to, than that only
* object's properties are changed at that point, and the change persists
* even after the method call is finished.
*
* Written 2004 by Wayne Pollock, Tampa Florida USA.
*/
public class ParamPassingDemo
{
static void aMethod ( Person p, int i )
{ p.name = "Hymie Piffl";
++i;
}
public static void main (String [] args )
{
Person wayne = new Person( "Wayne Pollock" );
int num = 2;
System.out.println( "Before invoking aMethod(Person,int):\n" );
System.out.println( "\twayne.name = \"" + wayne.name + "\"" );
System.out.println( "\tnum = " + num );
aMethod( wayne, num );
System.out.println( "\nAfter invoking aMethod(Person,int):\n" );
System.out.println( "\twayne.name = \"" + wayne.name + "\"" );
System.out.println( "\tnum = " + num );
}
}
class Person
{
String name;
// Person constructor:
public Person ( String name )
{
this.name = name;
}
// Rest of class Person goes here
}