0<索引>:在java中我们并不能直接实现修改参数值的方法,在看到自动装箱(boxing)这个知识点的时候,有人觉得包装器类可以实现这个功能,因为int是包含在Integer类中的数值,有没有很像c语言的指针以及指针所指向的数值?
1<codeOfIndex>:
public class sonOfNum {
public static void trip(Integer i)
{
i = i+3;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 10;
trip(a);
System.out.println(a);
}
}
2<resultOfCode>:10,我们发现结果并没变,原因是因为Integer对象是不可变的:包含在包装器中的内容不会改变,不能使用这些包装器类创建修改数值参数的方法,c/c++程序员不能把Java的包装器和指针混为一谈。
3<AnsOfQus>:如果想编写数值参数值的方法,就需要使用在org.omg.CORBA包中定义的持有者(holder),包括IntHolder,BooleanHolder等。每个持有者类型都包含一个共有(!)赋值,通过它可以访问储存在其中的值。
4<CodeOfQus>:
import org.omg.CORBA.IntHolder;
public class sonOfNum {
public static void trip(IntHolder i)
{
i.value = i.value+3;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
IntHolder aHolder = new IntHolder();
aHolder.value= 10;
trip(aHolder);
System.out.println(aHolder.value);
}
}
结果:13