引用数组的对象数组案列介绍

对象数组

你好! 这是一个介绍对象数组的帖子,如果你想学习如何使用对象数组, 可以仔细阅读这篇文章,了解一下对象数组基本语法知识。

***引用数据类型数组在语法上和基本数据类型数组是没有区别的。***

下面请看这几个案例,以便熟悉和理解对象数组的流程:

这里要用到的类,属性:

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水平,大牛勿喷,大神可指点?Alt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值