Java参数传递及值传递实现原理详解
java方法参数的传递有两种,值传递和引用传递。
1.按值传递:
参数类型是int,long等八大基本数据类型时,参数传递的过程是按值拷贝的过程
如下代码
publicstaticvoidmain(String[]args){ inta=5; fun(a); System.out.println(a);//输出结果为5 } privatestaticvoidfun(inta){ a+=1; }
2.按引用传递
参数类型为引用类型,参数传递的过程采用拷贝引用的方式
publicclassTest{ publicstaticvoidmain(String[]args){ Aa=newA(5); fun(a); System.out.println(a.a);//输出结果为6 } privatestaticvoidfun(Aa){ a.a+=1; } staticclassA{ publicinta; publicA(inta){ this.a=a; } } }
再看下面这种情况:
publicclassTest{ publicstaticvoidmain(String[]args){ Integera=5; fun(a); System.out.println(a);//输出结果为5 } privatestaticvoidfun(Integera){ a+=1; } }
这里明明是引用传递,为什么没有改变对象的值呢?
这里其实使用了基本数据类型封装类的自动装箱功能。
Integera=5,编译后实际为Integera=Integer.valueOf(5),查看Integer的源码,并没有改变原对象的值,只是将其引用指向了另一个对象。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。