还有在程序中遇到的一个问题
static int f(int x){x=2*x;return x;} 然后主程序int x=2,引用一次f(x),得到4,但是主程序里的x还是等于2但是对于这样一个程序 class monint{int val;} class Test{ static int f(monint z){ z.val =2*z.val; return z.val;} public static void mains(string[] args){ monint x=new monint; x.val=1; system.out.print(f(x)+" "+x) } }为什么这里x.val就变成2了呀? 难道因为x的类型是monint,非基础类型么?再举个关于list例子, static int long(list xs){ int r=0; for(;xs!=null;x=x.next)r++; return r}//返回list xs的长度 然后主程序里面 list xs=new list(1,newlist(2,newlist(3,null))); int size=long(xs); 这里引用函数long以后,返回长度3 但是在size里面有个循环语句for,使x=x.next,引用过long函数以后,主程序里面的xs最后变了么,为什么啊 |