java参数传递

来源:百度知道 编辑:UC知道 时间:2024/06/04 03:43:14
public class Rectangle
{

public static void main(String[] args)
{
int length=10;
int width=5;
int area=area(length,width);
System.out.println("length="+length+" width="+width+" area="+area);
}
static int area(int a,int b)
{
int temp;
temp=a;
a=b;
b=temp;
return a%b;

}
}
public class Rectangle
{

public static void main(String[] args)
{
int length=10;
int width=5;
int area=area(length,width);
System.out.println("length="+length+" width="+width+" area="+area);
}
static int area(int a,int b)
{
return a%b;

}
}结果为什么不同 啊 书上说“按值传递是指调用方法时,系统首先为被调用方法的形参分配内存空间,并将实参的值按位置一一对应复制给形参,此后,被调用方法中形参值的任何改变都不会影响到实参”。
我知道我运算符错了,其实我是想验证一下形参值的任何改变都不会影响到实参,那么对于a*b来说交换结果看不出什么变化。我不明白的是按理说方法体中形参的变化不会改变实参的值,但是a%b

static int area(int a,int b)
{
int temp;
temp=a;
a=b;
b=temp;
return a%b;

}
这里的a,b就是形参了,在方法体中他们是可以改变的
而无论a,b如何改变不会影响到你方法外length和width的值

呵呵,方法没错,
只是(10 % 5) = 0,(5 % 10) = 5;
因为两个方法里参数顺序不同。

你的程序是对的。首先,求面积是要乘的,而不是%。其次,你在area()里面交换a,b的值是不会改变实参的值的,你的程序验证了这一点,我给你做了测试了,没有问题。你要细心一点好好再看看,书上讲的没有错!
如果你对我的回答满意请给我多加分,如果还有异意,请给我留言!

a,b本来就是形参啊

2楼正解,确实没有错误,只是你运算符用错了而已