public class Demo04 {
public static void main(String[] args) {
int a = 1;
System.out.println(a);//1
Demo04.cahnge(a);
System.out.println(a);//1
}
//没有返回值
public static void cahnge(int a){
a = 10;
}
}
public class Demo05 {
public static void main(String[] args) {
Person person = new Person();
System.out.println(person.name);//null
Demo05.change(person);
System.out.println(person.name);//路飞
}
public static void change(Person person){
//person是一个对象,指向的是Person person = new Person();
//这是一个具体的人,可以改变属性
person.name = "路飞";
}
}
//定义了一个person类,有一个属性:name
class Person{
String name;
}
第一个代码为值传递,调用change方法并不会改变a的值,因为该change方法没有返回值,change方法里的a = 10不会影响到实际的a。
第二个代码为引用传递(本质上还是值传递),它定义了一个Person类并创建了一个person对象,person对象有个属性为name,此时调用change方法改变的是person对象的属性,所以前后会发生改变