对象数组
你好! 这是一个介绍对象数组的帖子,如果你想学习如何使用对象数组, 可以仔细阅读这篇文章,了解一下对象数组基本语法知识。
***引用数据类型数组在语法上和基本数据类型数组是没有区别的。***
下面请看这几个案例,以便熟悉和理解对象数组的流程:
这里要用到的类,属性:
package com.lovo.javaOO03.array;
public class StudentBean {
/**学生姓名*/
private String name;
/**学生年龄*/
private int age;
public StudentBean() {
}
public StudentBean(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
1. 产生一个存放5个学生信息的数组,每个元素可以存放一个学生对象。但是每个元素现在都只是null。
StudentBean[] stuArr = new StudentBean[5];
for (int i = 0; i < stuArr.length; i++) {
System.out.println("输入第" + (i + 1) + "个学生姓名:");
String name = new Scanner(System.in).next();
System.out.println("输入第" + (i + 1) + "个学生年龄:");
int age = new Scanner(System.in).nextInt();
stuArr[i].setName(name);//产生空指针异常
stuArr[i].setAge(age);
stuArr[i] = new StudentBean(name, age);//先给数组元素产生对象,然后赋值
}
2. 找出年龄最大的学生(根据上面写的来完成):
StudentBean maxStudent = stuArr[0];
for (int i = 0; i < stuArr.length; i++) {
if (maxStudent.getAge() < stuArr[i].getAge()) {
maxStudent = stuArr[i];
}
}
System.out.println("最大学生是:"+maxStudent.getName());
System.out.println("他的年龄是"+maxStudent.getAge());
3. 用户在指定位置加入一个StudentBean对象:
System.out.println("你要添加在第几个?----");
int index = new Scanner(System.in).nextInt();
System.out.println("输入添加的学生姓名:");
String name = new Scanner(System.in).next();
System.out.println("输入添加的学生年龄:");
int age = new Scanner(System.in).nextInt();
StudentBean[] newStuArr = new StudentBean[stuArr.length+1];
//法1:
for(int i = 0;i<index -1;i++) {
newStuArr[i] = stuArr[i];
}
newStuArr[index-1] = new StudentBean(name, age);
for(int i = index ; i<newStuArr.length;i++) {
newStuArr[i] = stuArr[i-1];
}
//法2:
System.arraycopy(stuArr, 0, newStuArr, 0, index -1);
newStuArr[index-1] = new StudentBean(name, age);
System.arraycopy(stuArr, index-1, newStuArr, index, newStuArr.length-index);
stuArr = newStuArr;
for (int i = 0; i < stuArr.length; i++) {
System.out.println(stuArr[i].getName()+ " " +stuArr[i].getAge());
}
4.用户删除指定位置的StudentBean对象。删除后,要求剩余对象连续:
System.out.println("你要删除第几个学生?----");
index = new Scanner(System.in).nextInt();
System.arraycopy(stuArr, index, stuArr, index-1, stuArr.length-index);
newStuArr = new StudentBean[stuArr.length-1];
System.arraycopy(stuArr, 0, newStuArr, 0, stuArr.length -1);
stuArr = newStuArr;//垃圾回收
for (int i = 0; i < stuArr.length; i++) {
System.out.println(stuArr[i].getName()+ " " +stuArr[i].getAge()); }
HelloWorld水平,大牛勿喷,大神可指点?