Remember that a method gets COPIES of its parameters. It doesn't have access to the actual variable used as the argument -- and in fact the argument isn't always a variable. It might be an expression instead.
Here is an example that shows what happens when different types of values are passed as parameters, and changed within a method.
public class TestParams {
public static void main (String[] args) {
// Example when the string passed as a parameter is changed
// inside the "m1" method.
String ptooey = "help!";
System.out.println(ptooey);
m1(ptooey);
System.out.println(ptooey);
System.out.println();
// Example when the contents of the Num object passed
// as a parameter is changed inside the "m2" method.
Num myNum = new Num();
myNum.setNum (55);
System.out.println(myNum);
m2(myNum);
System.out.println(myNum);
System.out.println();
// Example when the reference to the Num object passed
// as a parameter is changed inside the "m3" method.
myNum = new Num();
myNum.setNum (99);
System.out.println(myNum);
m3(myNum);
System.out.println(myNum);
// Example when a primitive type passed
// as a parameter is changed inside the "m4" method.
int i = 55;
System.out.println(i);
m4(i);
System.out.println(i);
}
private static void m1 (String s) {
s = s + "boo!";
}
private static void m2 (Num n) {
n.setNum (100);
}
private static void m3 (Num n) {
n = new Num();
n.setNum(66);
}
private static void m4 (int j) {
j = 66;
}
}
class Num {
private int theNum = 0;
public void setNum (int newVal) {
theNum = newVal;
}
public String toString () {
return "Num contains: " + theNum;
}
}
help! help! Num contains: 55 Num contains: 100 Num contains: 99 Num contains: 99 55 55
[ Home | Outline | Announcements | Newsgroup | Assignments | Exams | Lectures | Links ]

© Copyright 2000. All Rights Reserved.