Posted on Monday, July 10, 2006 9:18 AM
package base;
/**
* 关于对象的传递
* JAVA总是使用传值调用
* */
public class ChangeParameter {
private int i = 0;
public ChangeParameter() {}
/**
* 不能修改基本类型
* */
public void changeBaseType(int j) {
j = 10;
}
/**
* 不能让对象参数指向新的对象
* */
public void changeObject(Test test) {
test = new Test(100);
}
/**
* 可以修改对象参数的状态
* */
public void changeValue(Test test) {
test.setChange(100);
}
/**
* 不能修改包装器类的值
* */
public void changeWrapType(Integer i) {
i = new Integer(99);
System.out.println("改变Integer = " + i.toString());
}
public static void main(String[] args) {
ChangeParameter change = new ChangeParameter();
// 不能修改基本类型
System.out.println("不能修改基本类型");
int value = 0;
change.changeBaseType(value);
System.out.println(value);
//不能让对象参数指向新的对象
System.out.println("不能让对象参数指向新的对象");
Test test = new Test(10);
System.out.println(test);
change.changeObject(test);
System.out.println(test);
// 可以修改对象参数状态
System.out.println("可以修改对象参数状态");
System.out.println(test);
change.changeValue(test);
System.out.println(test);
//不能修改包装器类的值
System.out.println("不能修改包装器类的值");
Integer it = new Integer(10);
System.out.println("传递前 Integer = " + it.toString());
change.changeWrapType(it);
System.out.println("传递后 Integer = " + it.toString());
}
}
final class Test {
private int i = 0;
public Test(int i) {
this.i = i;
}
public void setChange(int i) {
this.i = i;
}
public String toString() {
return getClass().getName() + " " + i;
}
}