Skip to content

Commit 1d99676

Browse files
authored
增加 ”参数传递“ 中一点内容
1 parent 63dbe75 commit 1d99676

1 file changed

Lines changed: 15 additions & 1 deletion

File tree

notes/Java 基础.md

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ System.out.println(s4 == s5); // true
223223

224224
Java 的参数是以值传递的形式传入方法中,而不是引用传递。
225225

226-
Dog dog 的 dog 是一个指针,存储的是对象的地址。在将一个参数传入一个方法时,本质上是将对象的地址以值的方式传递到形参中。
226+
Dog dog 的 dog 是一个指针,存储的是对象的地址。在将一个参数传入一个方法时,本质上是将对象的地址以值的方式传递到形参中。而在方法中改变对象的成员变量值也会使原对象的成员变量发生变化,因为是改变同一个地址指向的内容。
227227

228228
```java
229229
public 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

0 commit comments

Comments
 (0)