图片类网站模板,恢复被百度k网站 关键词收录,建设官方企业网站,wordpress专题JAVA基础--方法传参为啥拿这个当话题#xff1f;在初学者阶段#xff0c;许多童鞋都对方法传参比较迷茫#xff0c;知其然不知其所以然。一.先说说参数传递的几个术语#xff1a;值调用(call by vale):表示方法接收的是调用者传递的值。引用调用(call by reference):表示方…JAVA基础--方法传参为啥拿这个当话题在初学者阶段许多童鞋都对方法传参比较迷茫知其然不知其所以然。一.先说说参数传递的几个术语值调用(call by vale):表示方法接收的是调用者传递的值。引用调用(call by reference):表示方法接收的是调用者传递的变量地址。一个方法可以修改传递引用所对应的变量值而不能修改传递值调用所对应的变量值**JAVA语言总是采用值调用。也就是说JAVA方法得到的是所有参数值的一个拷贝方法不能修改传递给他的任何参数变量的内容。例如int age100;person.setAge(age);在以上方法调用后age 的值还是100下面再看一例子假如某方法将一个变更值修改为原来的值的3倍public void addValue(int x){x 3 * x;}然后调用这个方法int percent 10;addValue(percnet);无论如何调用percent的值还是10下面是执行过程1.x被初始化为percent值的一个拷贝(也就是10)2.x被乘以3后值变为30。但是percent仍然是103.该方法结束后参数变量x不再使用。如图一二.java方法传参类型:基本数据类型:(数字,布尔型)对象引用类型:基本数据类型传参在上例中已经说过了,是不能修改基本数据类型参数的值的.那么对于对象引用类型的传参,能否修改呢?先来看例子:有如下方法:public static void tripleSalary(Employee x){x.raiseSalary(200);}当调用如下代码harry new Employee();tripleSalary(harry);时,具体的执行过程如下:1).x被初始化为harry对象的拷贝,这里是一个对象的引用;2).raiseSalary方法应用于这个对象引用.即x和harry同时引用的Employee对象薪金提高了200%.3).方法调用结束后,参数变量x不再使用.但对象变量harry继续引用那个薪金增至3倍Employee对象.其过程如下图:通过以上实例,可以看出对象参数传递的是对象引用的拷贝,对象引用及其他的拷贝同时引用同一个对象.很多程序语言提供两种传递方式:值传递和引用传递(C和Pascal).有些程序员认为java语言对对象参数传递也是用的引用调用.实际上是理解错误.这种错误具有一定的普遍性.下面通过一反例来说明该问题:首先,编写一个交换两个Employee对象的方法:public staitc void swap(Employee x,Emplyee y){Employee temp x;x y;y temp;}如果JAVA程序语言是对对象采用引用调用那么这个方法就应该能够实现交换数据的效果Employee a new Employee(Alice,...);Employee b new Employee(Bob,...);swap(a,b);但是方法并没有改变存储在变量a和b中的对象引用。swap方法的参数x和y被初始化为两个对象引用的拷贝这个方法交换的是这两个拷贝。在方法结束时参数变量x和y被丢弃了。原来的变量a和b仍然引用这个方法调用之前所引用的对象如下图这个过程说明java语言对对象采用的不是引用调用实际上对象引用进行的是值传递。最后总结一下在JAVA中方法参数的使用情况*一个方法不能修改一个基本数据类型的参数*一个方法可以改变一个对象参数的状态(属性)*一个方法不能实现让对象参数引用一个新对象