值传递和地址传递
关于类的值传递和引用传递的问题
引用传递: 类、接口、数组
值传递本质传递的是数值本身,是复制后传递值,所以原地址值不会改变
而引用传递传递的是地址,多个指针指向一个地址,任何一个引用修改了堆区的内容,都会影响到所有的引用
如果多个引用指向同一个堆区的空间地址,任何一个引用修改了堆区的内容,都会影响到所有的引用
public class OOPDemo03 {
public static void main(String[] args) {
Person p = new Person();
int a = 10;
System.out.println("方法调用前a的值: " + a); //10
p.change(a); //15
System.out.println("方法调用后a的值: " + a);//10
System.out.println("====================");
Dog d = new Dog();
d.name = "蝴蝶犬";
d.age = 5;
System.out.println("方法调用前狗的姓名: " + d.name + ",狗的年龄: " + d.age); //蝴蝶犬 5
p.change(d); //哈士奇 30
System.out.println("方法调用后狗的姓名: " + d.name + ",狗的年龄: " + d.age); //哈士奇 30
}
}
class Person {
public void change(int a) {
a += 5;
System.out.println("方法调用中a的值: " + a);
}
public void change(Dog dog) {
dog.name = "哈士奇";
dog.age = 30;
System.out.println("方法调用中狗的姓名: " + dog.name + ",狗的年龄: " + dog.age);
}
}
class Dog {
String name;
int age;
}