`
txf2004
  • 浏览: 6886046 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

参数传递

 
阅读更多

今天要讲的是方法的参数传递,主要有值传递和参数传递;
值传递:将实际参数值的副本传入方法内,而实际参数本身不会受任何影响;
如果定义方法时包含了形参,则调用方法时必须给这些形参指定参数值,调用方法时实际传给形参的参数值也被称为实参。

public class TestTransfer
{
public static void changeAB(int a,int b)
{
int tmp=a;//实现参数a b的值的交换;
a=b;
b=tmp;
System.out.println("changeAB方法里的,a的值" + a+ ";b的值 "+b);//a=5;b=10;
}
public static void main(String[] args)
{
int a=10;
int b=5;
changeAB(a,b);//调用方法changAB()时,形参a、b值的交换,并不影响main方法中的实参a、b的值
System.out.println("交换后的a的值"+a+";b的值"+b);//a=10;b=5;
}
}
引用参数传递:
public class DateW
{
public int a;
public int b;
}
public class TestTransfer
{
public static void changeAB(DateW d)
{
int tmp=d.a;//实现参数a b的值的交换;交换各自的地址;
d.a=d.b;
d.b=tmp;
System.out.println("changeAB方法里的,a的值" + d.a+ ";b的值 "+d.b);//a=5;b=10;
}
public static void main(String[] args)
{
DateW d=new DateW();
d.a=10;
d.b=5;
changeAB(d);//调用方法changAB()时,形参a、b值的交换,这次改变的是a、b的地址,所以a、b值发生变化;
System.out.println("交换后的a的值"+d.a+";b的值"+d.b);//a=5;b=10;
}
}
其实值传递就是在一个方法里两个值交换,但只是在这个方法里改变,而没有改变他们本身的地址,只是将自己复制一份过去而已,所以在方法外输出
这两个值将还是原来的值,不会受到任何影响;
引用参数传递,在DateW类的对象存上a、b的地址,main给其赋值,而在changgeAB()方法里d对象分别把a、b的值产生交换,改变了他们原来的
地址,所以会产生变换,所以一旦地址发生改变,他们的值就会发生改变;恩恩
呼呼打酱油去喽!!!!!!!!!!!!!!!!!!!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics