求解输出为啥都是王五

package basic;

class Student{
public String name;
public int age;
public Student(String name,int age){
this.name =name;
this.age=age;

}

}
public class Test {
private static void ref(Student s){
s.name ="wangwu";
s.age=12;
}
public static void main(String[] args) {
Student st = new Student("zs", 20);
Student st1=st;
ref(st1);
System.out.println(st.name +st.age);
System.out.println(st1.name +st1.age);
}

st和st1引用同一个对象,而ref方法改变了对象的属性。

全场你就new了一次,所以Student的对象对应的内存地址只有一处,修改这个内存地址的Student的属性,就是修改所有调用这个地址的Student的属性。换句话说,Student一直都只有一个,只是名字不同。

Student st1=st;
这是浅拷贝
要这么写
Student st1=new Student(st.name, st.age);