File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -223,7 +223,7 @@ System.out.println(s4 == s5); // true
223223
224224Java 的参数是以值传递的形式传入方法中,而不是引用传递。
225225
226- Dog dog 的 dog 是一个指针,存储的是对象的地址。在将一个参数传入一个方法时,本质上是将对象的地址以值的方式传递到形参中。
226+ Dog dog 的 dog 是一个指针,存储的是对象的地址。在将一个参数传入一个方法时,本质上是将对象的地址以值的方式传递到形参中。而在方法中改变对象的成员变量值也会使原对象的成员变量发生变化,因为是改变同一个地址指向的内容。
227227
228228```java
229229public class Dog {
@@ -236,6 +236,10 @@ public class Dog {
236236 String getName() {
237237 return name;
238238 }
239+
240+ void setName(String name) {
241+ this . name = name;
242+ }
239243
240244 String getObjectAddress() {
241245 return super . toString();
@@ -251,6 +255,9 @@ public class PassByValueExample {
251255 func(dog);
252256 System . out. println(dog. getObjectAddress()); // Dog@4554617c
253257 System . out. println(dog. getName()); // A
258+ func2(dog);
259+ System . out. println(dog. getObjectAddress()); // Dog@4554617c
260+ System . out. println(dog. getName()); // C
254261 }
255262
256263 private static void func (Dog dog ) {
@@ -259,6 +266,13 @@ public class PassByValueExample {
259266 System . out. println(dog. getObjectAddress()); // Dog@74a14482
260267 System . out. println(dog. getName()); // B
261268 }
269+
270+ private static void func2 (Dog dog ) {
271+ System . out. println(dog. getObjectAddress()); // Dog@4554617c
272+ dog. setName(" C" );
273+ System . out. println(dog. getObjectAddress()); // Dog@4554617c
274+ System . out. println(dog. getName()); // C
275+ }
262276}
263277```
264278
You can’t perform that action at this time.
0 commit comments