当前位置 博文首页 > YHSevenWater的博客:Java对象数组的使用;不同类与同类中属性和
对象数组:数组中每一个元素为一个对象。
为对象数组分配内存空间:
Animal [] animal = new Animal[10];
对象数组动态初始化并实例化:
for(int i = 0; i< animal.length; i++){
animal[i] = new Animal();
}
对
象
数
组
的
定
义
其
实
与
一
般
数
组
类
似
,
唯
一
的
区
别
在
于
它
需
要
为
每
一
个
元
素
进
行
实
例
化
\color{Red}{对象数组的定义其实与一般数组类似,唯一的区别在于它需要为每一个元素进行实例化}
对象数组的定义其实与一般数组类似,唯一的区别在于它需要为每一个元素进行实例化
????在此的实例化过程是不能够省略的,省略会报“空指针异常”的错误(本人亲测)。在此,我对上述区别的理解是:类中的对象与对象是互不相同的(就像我们自己都是这个世界上独一无二的个体一样),所以需要对对象数组中的元素(对象)逐一实例化。
package com.java.oop;
import java.util.Random;
/**
* @ClassName AnimalTest
* @Description: 1.对象数组的使用;2.不同类与同类中属性与方法的调用;3.方法的封装
* @Author Seven
* @Date 2021/7/26 8:33
* @Version 1.0
**/
public class AnimalTest {
public static void main(String[] args) { //主方法尽量写得简洁一点,增加代码的阅读性。
Animal [] animal = new Animal[10]; //创建对象数组
for (int i = 0; i < animal.length; i++) { //对象数组动态初始化
animal [i] = new Animal(); //对象实例化
}
AnimalTest test = new AnimalTest(); //需要先创建AnimalTest对象,才能调用其他的方法
//1.对对象数组赋初始值
test.fuZhi(animal);
//2.遍历动物信息
test.print(animal);
//3.根据年龄按照冒泡排序进行重新排序
test.bubble(animal);
//4.查找年龄为10的动物信息
test.search(animal,10);
}
/**
* @Description: 1.对象数组的赋值
* @Author: Seven
* @Date: 2021/7/26 10:35
* * @param animal
* void
**/
public void fuZhi(Animal [] animal){
for (int i = 0; i < animal.length; i++) {
animal[i].nameNo = (i + 1);
animal[i].age = (int)(Math.random()*31);
animal[i].sex = (int)(Math.random()*2);
}
}
/**
* @Description: 2.遍历数组动物的信息
* @Author: Seven
* @Date: 2021/7/26 9:41
* * @param animal
* void
**/
public void print(Animal [] animal){
System.out.println("动物的基本信息是:");
for (int i = 0; i < animal.length; i++) {
System.out.println(animal[i].show());
}
}
/**
* @Description: 3.根据年龄按照冒泡排序进行重新排序
* @Author: Seven
* @Date: 2021/7/26 9:42
* * @param animal
* void
**/
public void bubble(Animal [] animal){
for (int i = 0; i < animal.length - 1; i++) {
for (int j = 0; j < animal.length - 1 -i; j++) {
if(animal[j].age > animal[j+1].age){
Animal temp = animal[j];
animal[j] = animal[j+1];
animal[j+1] = temp;
}
}
}
System.out.println("冒泡排序后的动物信息为:");
for (int i = 0; i < animal.length; i++) {
System.out.println(animal[i].show());
}
}
/**
* @Description: 4.查找年龄为10的动物信息
* @Author: Seven
* @Date: 2021/7/26 15:12
* * @param animal
* @param number
* void
**/
public void search(Animal [] animal, int number){
System.out.println("年龄为"+number+"的动物信息如下:");
for (int i = 0; i < animal.length; i++) {
if(animal[i].age == number){
System.out.println(animal[i].show());
}
}
}
}
class Animal{
int nameNo; //动物编号
int sex; //性别
int age; //年龄
/**
* @Description: 展示动物信息
* @Author: Seven
* @Date: 2021/7/26 9:41
* * @param
* java.lang.String
**/
public String show(){
return "动物编号:"+nameNo+"\t年龄:"+age+"\t性别(0代表母,1代表公):"+sex;
}
}
cs