为什么输入两条不同的学生数据 输出的会是最后一个学生的

img


以下是代码 谢谢
public class a {
int sno;
String name;
int age;
郭襄[] a=new 郭襄[30];
public void denglu(){
System.out.println("");
System.out.println("\t学生信息管理系统");
System.out.println("
");
System.out.println("1.新增学生");
System.out.println("2.查询学生");
System.out.println("3.退出");
System.out.println();
}

public void student(郭襄 student){
    for (int i = 0; i < a.length; i++) {
        if (a[i]==null){
            a[i]=student;
            break;
        }
    }
}

public  void showstudent(){
    for (int i = 0; i < a.length; i++) {
        if (a[i]!=null){
            System.out.println("学号:"+a[i].sno+"\t名字:"+a[i].name+"\t年龄:"+a[i].age);
        }
    }
}

public static void main(String[] args) {
    Scanner input=new Scanner(System.in);
    郭襄 a=new 郭襄();
    a.denglu();
    do {
        System.out.print("请输入操作序号:");
        int netx= input.nextInt();
        if (netx==1){
            System.out.print("请输入学生学号:");
            a.sno= input.nextInt();
            System.out.print("请输入学生姓名:");
            a.name= input.next();
            System.out.print("请输入学生年龄:");
            a.age= input.nextInt();
            a.student2(a);
        }else if (netx==2){
            System.out.println("本班学生列表:");
            a.showstudent();
        }else if (netx==3){
            System.exit(0);
        }else {
            System.out.println("操作序号无效!");
        }
    }while (true);
}

}

你在25行到31行无论怎么改名字,也只是对20行定义的郭襄进行修改,你创建了一个郭襄,并在第一轮循环将其命名为xx,并储存在了a列表的[0],在第二轮循环中,你又将原本那个叫xx的郭襄对象进行修改,改为xz,并赋给了a的[1]中,但是怎么做还是无法改变这是同一个郭襄的事实,所以a[0]中的郭襄本质就是a[1]中的郭襄,自然就会输出一样的名字了