今天忽然想到关于方法参数传递的问题,后通过简单代码的验证,最终肯定是值传递.java
关于方法参数的传递形式有两种:值传递,引用传递.code
一.值传递
对象
所谓值传递就是说实际参数会复制一份而后传递到方法内去使用.当方法内对这个传递的值进行修改时,实际参数不受影响class
二.引用传递
test
所谓引用传递就是说不会复制一份实参值,因此当方法内部对这个传递的值进行修改是,实际参数会受到影响.引用
三.关于java中方法参数的传递方式方法
在java中能够这样理解方法参数的传递,首先对于java的基本类型来讲,就是复制一份而后让方法内部操做.对形参的操做不会影响实参.这显然是值传递.其次对于java中对象来讲,是复制这个对象的地址,造成一个新的形参,此时对对象值的改变,确定能够影响实参,由于他们都指向同一个地址的对象.但并非值传递的意义.当咱们让形参指向一个新的地址,及改变传递参数的值(这里是方法实际参数地址复制的值),原来实际参数指向的地址并无改变.因此明显能够认为java中方法参数的传递只有值传递.
static
四.证实代码co
public class MyTest { public static void main(String[] args) { Cat cat = new Cat("咪咪"); MyTest test = new MyTest(); int a = 100; test.printCatName(cat,a); System.out.println(cat); System.out.println(a); } public void printCatName(Cat cat,int a){ cat = null; System.out.println(cat); a = 10; } }
输出结果 参数传递
I am a cat named 咪咪 null com.lubby.test.Cat@43cda81e 100