Java方法的参数传递机制
2016-09-22 08:10
176 查看
Java方法的参数传递方法只有一种:值传递。
所谓值传递,就是将实际参数的副本传入方法,而参数本身不会受任何影响。
分为基本类型参数和引用类型参数两种传递考虑
1.基本类型参数传递
例如:
swap方法里,a的值是9,b的值是6
交互结束后方法里,a的值是6,b的值是9
可见swap()方法里a,b的值是9,6;j交换结束后变量a,b的值依然是6,9并没有改变
也就是说main()方法里的变量a,b,并不是swap方法里的a,b
实际上,当系统开始执行方法时,系统为形参执行初始化,就是把实参变量的值附给方法的形参变量,方法里操作的并不是实际的实参变量。
2.引用类型参数传递
引用类型参数传递一样采用值传递的方式,只不过是在传值的时候,将实参所指向的地址值传给了形参,并没有改变栈内存中的实参,而是改变了他们所引用的堆内存的对象,这样在形参引用堆内存中的对象时,会对堆内存的对象进行修改,看起来就像传入实参本身一样
例如:
swap方法里,a成员变量的值是9,b成员变量的值是6
交换结束后,a成员变量的值是9,b成员变量的值是6
示意图:
所谓值传递,就是将实际参数的副本传入方法,而参数本身不会受任何影响。
分为基本类型参数和引用类型参数两种传递考虑
1.基本类型参数传递
例如:
package parameter; public class FundamentalType { public static void swap(int a,int b){ int tmp=a; a=b; b=tmp; System.out.println("swap方法里,a的值是"+a+",b的值是"+b); } public static void main(String[] args){ int a=6; int b=9; swap(a, b); System.out.println("交互结束后方法里,a的值是"+a+",b的值是"+b); } }结果为
swap方法里,a的值是9,b的值是6
交互结束后方法里,a的值是6,b的值是9
可见swap()方法里a,b的值是9,6;j交换结束后变量a,b的值依然是6,9并没有改变
也就是说main()方法里的变量a,b,并不是swap方法里的a,b
实际上,当系统开始执行方法时,系统为形参执行初始化,就是把实参变量的值附给方法的形参变量,方法里操作的并不是实际的实参变量。
2.引用类型参数传递
引用类型参数传递一样采用值传递的方式,只不过是在传值的时候,将实参所指向的地址值传给了形参,并没有改变栈内存中的实参,而是改变了他们所引用的堆内存的对象,这样在形参引用堆内存中的对象时,会对堆内存的对象进行修改,看起来就像传入实参本身一样
例如:
package parameter; class DataWrap{ int a; int b; } public class ReferenceType { public static void swap(DataWrap dw){ int tmp=dw.a; dw.a=dw.b; dw.b=tmp; System.out.println("swap方法里,a成员变量的值是"+dw.a+",b成员变量的值是"+dw.b); } public static void main(String[] args){ DataWrap dw=new DataWrap(); dw.a=6; dw.b=9; swap(dw); System.out.println("交换结束后,a成员变量的值是"+dw.a+",b成员变量的值是"+dw.b); } }运行结果为
swap方法里,a成员变量的值是9,b成员变量的值是6
交换结束后,a成员变量的值是9,b成员变量的值是6
示意图:
相关文章推荐
- Java方法参数的传递机制 ,一片比较详细的文章
- java中方法的参数传递机制
- java中方法的参数传递机制
- Java中方法的参数传递机制
- Java中方法的参数传递机制
- java中方法的参数传递机制
- java中方法的参数传递机制
- java中方法的参数传递机制
- Java方法参数的传递机制,值传递?引用传递?
- 用java的反射机制执行某个方法并传递复杂参数
- java中方法的参数传递机制
- java中的方法参数传递机制---值传递
- java中方法的参数传递机制
- JAVA中的方法的参数传递机制:
- Java学习笔记(十)——方法的参数传递机制
- java中方法参数的传递机制
- 深入理解Java中方法的参数传递机制
- java中的方法参数的传递机制
- 【Java基础】12、java中方法的参数传递机制
- java中方法的参数传递机制