java值传递和引用传递的实例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java值传递和引用传递的实例
引言
在Java编程中,传递参数是一项基本的操作。

了解参数传递的方式对于理解Java 程序的执行过程至关重要。

Java中有两种传递参数的方式:值传递和引用传递。

本文将通过实例来详细讨论这两种传递方式的特点和区别。

值传递
值传递是指将实参的值复制一份传递给形参,在方法内部对形参的修改不会影响实参的值。

下面通过一个例子来说明值传递的特点。

例子1:基本数据类型的值传递
public class ValuePassingExample {
public static void main(String[] args) {
int num = 10;
System.out.println("调用方法前,num的值为:" + num);
modifyValue(num);
System.out.println("调用方法后,num的值为:" + num);
}
public static void modifyValue(int value) {
value = 20;
System.out.println("方法内部修改后,value的值为:" + value);
}
}
输出结果:
调用方法前,num的值为:10
方法内部修改后,value的值为:20
调用方法后,num的值为:10
从输出结果可以看出,虽然在方法内部修改了形参value的值,但是对实参num没有任何影响。

这是因为值传递是将实参的值复制给形参,形参和实参是两个独立的变量。

例子2:String类的值传递
public class ValuePassingExample {
public static void main(String[] args) {
String str = "Hello";
System.out.println("调用方法前,str的值为:" + str);
modifyValue(str);
System.out.println("调用方法后,str的值为:" + str);
}
public static void modifyValue(String value) {
value = "World";
System.out.println("方法内部修改后,value的值为:" + value);
}
}
输出结果:
调用方法前,str的值为:Hello
方法内部修改后,value的值为:World
调用方法后,str的值为:Hello
同样地,对于String类型的参数,值传递也不会改变实参的值。

这是因为String
是不可变类型,对其进行修改实际上是创建了一个新的String对象。

引用传递
引用传递是指将实参的引用传递给形参,在方法内部对形参的修改会影响实参的值。

下面通过一个例子来说明引用传递的特点。

例子3:对象类型的引用传递
public class ReferencePassingExample {
public static void main(String[] args) {
int[] array = {1, 2, 3};
System.out.println("调用方法前,array的值为:" + Arrays.toString(arra y));
modifyValue(array);
System.out.println("调用方法后,array的值为:" + Arrays.toString(arra y));
}
public static void modifyValue(int[] value) {
value[0] = 10;
System.out.println("方法内部修改后,value的值为:" + Arrays.toString(v alue));
}
}
输出结果:
调用方法前,array的值为:[1, 2, 3]
方法内部修改后,value的值为:[10, 2, 3]
调用方法后,array的值为:[10, 2, 3]
从输出结果可以看出,对于数组类型的参数,引用传递会改变实参的值。

这是因为数组是引用类型,实参和形参都指向同一个数组对象,对形参的修改会直接影响实参。

例子4:对象类型的引用传递
public class ReferencePassingExample {
public static void main(String[] args) {
Person person = new Person("Alice");
System.out.println("调用方法前,person的名字为:" + person.getName()); modifyValue(person);
System.out.println("调用方法后,person的名字为:" + person.getName()); }
public static void modifyValue(Person value) {
value.setName("Bob");
System.out.println("方法内部修改后,value的名字为:" + value.getName ());
}
}
class Person {
private String name;
public Person(String name) {
= name;
}
public String getName() {
return name;
}
public void setName(String name) {
= name;
}
}
输出结果:
调用方法前,person的名字为:Alice
方法内部修改后,value的名字为:Bob
调用方法后,person的名字为:Bob
对于对象类型的参数,引用传递同样会改变实参的值。

这是因为实参和形参都指向同一个对象,对形参的修改会直接影响实参。

总结
•值传递是将实参的值复制给形参,在方法内部对形参的修改不会影响实参的值。

•引用传递是将实参的引用传递给形参,在方法内部对形参的修改会影响实参的值。

•基本数据类型和不可变类型(如String)使用值传递,对象类型使用引用传递。

值传递和引用传递在Java编程中都有重要的应用。

了解它们的特点和区别,有助于我们更好地理解Java程序的执行过程,并能够正确地处理参数传递的问题。

希望本文的实例和讨论能够帮助读者更好地理解值传递和引用传递的概念。

相关文档
最新文档