理论教育 Java程序设计:传递引用数据类型参数

Java程序设计:传递引用数据类型参数

时间:2023-11-20 理论教育 版权反馈
【摘要】:引用数据类型参数的传递。程序运行结果:调用方法前:12345调用方法后:23456数组是引用类型变量。1)如果方法所接受的参数是基本数据类型,那么参数所传递的是普通变量,方法中的形参所接受的只是变量值的一个复制,所有的方法体内部的操作都是针对这个复制的内容进行的。这种方式的参数传递被称为“值传递”。2)当方法所接受的参数的类型是引用类型时,方法中的形参所接受的是个对象的地址,这个过程也就是“地址传递”。

Java程序设计:传递引用数据类型参数

当实参的类型是引用数据类型变量时,由于引用类型变量存放的是对象的地址,所以“赋值”给形参变量的不是对象的内容,而只是对象的引用,也就是对象的地址。引用数据类型参数的传递是个“传址”过程,传递的是地址的值。

【例8-13】引用数据类型参数的传递。

程序运行结果:

调用方法前:12345

调用方法后:23456

数组是引用类型变量。例8-13调用方法时传递的参数是一个数组变量,数组变量的值只是这个数组对象在内存中的地址。调用fx()时将这个数组的地址x传递(也就是复制)给了方法中的数组变量a,因此数组名a与数组名x保存的是相同的地址,所指向的也是同一个数组,操作的是同一个数组的元素。当方法中的程序使数组元素的值发生变化,方法返回后该数组的元素的值就发生了变化。

String字符串也是引用类型数据,但String字符串的特点是字符串内容不能被修改,如果要对字符串内容进行改变,则在数组中会创建一个新的、被改变了内容的字符串,这个字符串的地址不会是原来的地址了。

【例8-14】String类型参数的传递。

程序运行结果:调用方法前:这是一个字符串调用方法时:这是一个字符串发生了变化调用方法后:这是一个字符串

方法中变量a指向了新的字符串,原来的字符串内容没有被改变。

如果要想将方法中改变的字符串内容返回,则应该将改变后的字符串作为返回值返回。可对以上程序做如下修改(www.daowen.com)

方法fx()改写成:

调用语句:

fx(x);

改写成:

运行结果将会是:

调用方法前:这是一个字符串

调用方法后:这是一个字符串发生了变化

总结方法参数的传递过程,我们可这么理解:Java程序在调用方法时,把参数(实参)的值传递(复制)给方法。方法接受这些参数后,根据参数是基本数据类型还是引用类型分别有如下不同的处理过程。

1)如果方法所接受的参数是基本数据类型(如int,char,double等),那么参数所传递的是普通变量,方法中的形参所接受的只是变量值的一个复制,所有的方法体内部的操作都是针对这个复制的内容进行的。方法体执行结束后,这个形参变量也就完成了它的使命,不复存在。它不会对实参变量产生影响。这种方式的参数传递被称为“值传递”。

2)当方法所接受的参数的类型是引用类型时,方法中的形参所接受的是个对象的地址,这个过程也就是“地址传递”。由于形参是该对象地址的一个复制,这个地址和实参所指向的是同一个对象。当方法体内部对这个地址所指向的对象的内容进行操作时,实质上就是在对这个对象的直接操作。因此,方法体内部对对象的操作,将影响作为实参的引用对象的内容。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈