Topic: 请问调值运算的问题

  Print this page

1.请问调值运算的问题 Copy to clipboard
Posted by: zsjust
Posted on: 2005-12-13 02:14

class A
{
public static void main(...)
{
PassTest obj=new PassTest();
int x=5,y=30;
System.out.println("x and y before call"+x+""+y);
f(x,y);
System.out.println("x and y after call"+x+""+y);
}
public void f(int i,int j)
{
i*=2;
j/=2;
}
}

f调用后输出值并没有发生变化,如何才能使函数f真正改变变量x,y的值呢?
请那位大大清楚说一下或者指点应该看什么帖子,谢谢

2.Re:请问调值运算的问题 [Re: zsjust] Copy to clipboard
Posted by: liuliu1231111
Posted on: 2005-12-13 09:12

zsjust wrote:
class A
{
public static void main(...)
{
PassTest obj=new PassTest();
int x=5,y=30;
System.out.println("x and y before call"+x+""+y);
f(x,y);
System.out.println("x and y after call"+x+""+y);
}
public void f(int i,int j)
{
i*=2;
j/=2;
}
}

f调用后输出值并没有发生变化,如何才能使函数f真正改变变量x,y的值呢?
请那位大大清楚说一下或者指点应该看什么帖子,谢谢


1. public void f(int i,int j) 应改成静态函数 因为他要直接被public static void main(...)函数调用。
2.public void f(int i,int j) 中 i,j 是局部变量,调用后就释放资源,而不保留值,所以调用后,x,y的值仍然不会改变。可以 System.out.println("x and y after call"+x+""+y);写在函数里面。
public staic void f(int i,int j)
{
i*=2;
j/=2;
System.out.println("x and y after call"+i+""+j);
}
}


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923