auto commit

This commit is contained in:
CyC2018
2018-08-03 00:12:55 +08:00
parent d0fa9aff51
commit 480a8070cd
7 changed files with 66 additions and 100 deletions

View File

@ -223,7 +223,7 @@ System.out.println(s4 == s5); // true
Java 的参数是以值传递的形式传入方法中,而不是引用传递。
Dog dog 的 dog 是一个指针,存储的是对象的地址。在将一个参数传入一个方法时,本质上是将对象的地址以值的方式传递到形参中。在方法中改变对象的成员变量值也会使原对象的成员变量发生变化,因为改变同一个地址指向的内容。
以下代码中 Dog dog 的 dog 是一个指针,存储的是对象的地址。在将一个参数传入一个方法时,本质上是将对象的地址以值的方式传递到形参中。但是如果在方法中改变对象的字段值会改变原对象该字段值,因为改变的是同一个地址指向的内容。
```java
public class Dog {
@ -236,10 +236,6 @@ public class Dog {
String getName() {
return name;
}
void setName(String name) {
this.name = name;
}
String getObjectAddress() {
return super.toString();
@ -255,9 +251,6 @@ public class PassByValueExample {
func(dog);
System.out.println(dog.getObjectAddress()); // Dog@4554617c
System.out.println(dog.getName()); // A
func2(dog);
System.out.println(dog.getObjectAddress()); // Dog@4554617c
System.out.println(dog.getName()); // C
}
private static void func(Dog dog) {
@ -266,13 +259,6 @@ public class PassByValueExample {
System.out.println(dog.getObjectAddress()); // Dog@74a14482
System.out.println(dog.getName()); // B
}
private static void func2(Dog dog) {
System.out.println(dog.getObjectAddress()); // Dog@4554617c
dog.setName("C");
System.out.println(dog.getObjectAddress()); // Dog@4554617c
System.out.println(dog.getName()); // C
}
}
```