Java 中向方法传递对象

10 Sept 2024 | 4 分钟阅读

Java 是一种严格的传值语言。当我们向方法传递基本类型时,方法接收的是值的副本。但是,当我们向方法传递对象时,方法接收的是对对象的引用。当我们在方法内部修改对象时,这些更改将在方法外部的对象中反映出来。

本质上,参数不能被函数更改,但函数可以通过调用其中的某些方法来让参数自行更改。

  • 在创建类类型变量时,我们只创建了一个对象的引用。因此,当我们把这个引用传递给方法时,接收它的参数将引用与参数所引用的对象相同的对象。
  • 这意味着对象就像是通过按引用传递的方式传递给方法的。
  • 在方法内部对对象的更改确实会反映到作为参数使用的对象上。

ObjectPassing.java

输出

ob1 == ob2: true
ob1 == ob3: false

定义一个以其类对象作为参数的构造函数

对象参数最常见的用途之一涉及构造函数。在实践中,经常需要构造一个新对象,使其初始值与某个现有对象相同。为此,我们可以使用 Object.clone() 方法,或者定义一个以其类对象作为参数的构造函数。

PassingObjectExample.java

输出

Volume of mybox is 3000.0
Volume of myclone is 3000.0

返回对象

在 Java 中,方法可以返回任何类型的数据,包括对象。例如,在下面的程序中,incrByTen() 方法返回一个对象,其中 an (整数变量) 的值比调用该方法的对象中的值大十。

PassingObject.java

输出

ob1.a: 2
ob2.a: 12

注意:当将对象引用传递给方法时,引用本身是通过值传递的。然而,被传递的值指向一个对象,因此该值的副本仍然会指向与其对应参数相同的对象。这就是为什么我们说 Java 是严格的传值语言。

结论

将对象传递给方法是一种强大的技术,它允许我们在程序的不同部分之间共享数据。对于使用许多内置的 Java 类和库来说,这也是必不可少的。