对象数组:
类也可以为数组类型
1、动态初始化
类 对象数组名称[] = new 类 [长度], 每个元素的内容都是null
范例:使用动态初始化
package 常规类型题;
class Person04 {
private String name;
private int age;
public Person04(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;
}
public String getInfo() {
return "姓名:" + this.name +
",年龄:" + this.age;
}
}
public class ArrayDemo4 {
public static void main(String[] args) {
Person04[] per = new Person04[3];
per[0] = new Person04("张三", 20);
per[1] = new Person04("李四", 21);
per[2] = new Person04("王五", 20);
for (int i = 0; i < per.length; i++){
System.out.println(per[i].getInfo());
}
}
}
输出结果:
姓名:张三,年龄:20
姓名:李四,年龄:21
姓名:王五,年龄:20
2、静态初始化
类 对象数组名称[] = new 类[] {实例化对象,实例化对象, ...}
范例:使用静态初始化
package 常规类型题;
class Person04 {
private String name;
private int age;
public Person04(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;
}
public String getInfo() {
return "姓名:" + this.name +
",年龄:" + this.age;
}
}
public class ArrayDemo4 {
public static void main(String[] args) {
//静态对象数组初始化
Person04[] per = new Person04[] {
new Person04("张三", 20),
new Person04("李四", 21),
new Person04("王五", 20)
};
for (int i = 0; i < per.length; i++){
System.out.println(per[i].getInfo());
}
}
}
输出结果:
姓名:张三,年龄:20
姓名:李四,年龄:21
姓名:王五,年龄:20
此时的内存图:
类的关联:
引用传递的实例运用
引用分析一:
一个人有一辆车,人和车分别是两个不同的类,他们直接的关联是拥有和属于
package 常规类型题;
class Car {
private String name;
private double price;
private Person04 per; //一辆车属于一个人
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return this.price;
}
public void setPrice(double price) {
this.price = price;
}
public Person04 getPer() {
return this.per;
}
public void setPer(Person04 per) {
this.per = per;
}
public Car(String name, double price) {
this.name = name;
this.price = price;
}
public String getInfo() {
return "汽车品牌型号:" + this.name +
",汽车价格:" + this.price;
}
}
class Person04 {
private String name;
private int age;
private Car car; //一个人有一辆车
public Person04(String name, int age) {
this.name = name;
this.age = age;
}
public Car getCar() {
return this.car;
}
public void setCar(Car car) {
this.car = car;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return this.age;
}
public void setAge(int age) {
this.age = age;
}
public String getInfo() {
return "姓名:" + this.name +
",年龄:" + this.age;
}
}
public class ArrayDemo4 {
public static void main(String[] args) {
//第一步:声明对象并且设置彼此的关系
Person04 per = new Person04("林强", 29);
Car car = new Car("宾利", 8000000.00);
per.setCar(car); //一个人有一辆车
car.setPer(per); //一辆车属于一个人
//第二步:根据关系获取数据,getCar()返回的是Car对象
//代码链
System.out.println("此人拥有的车的基本信息为:");
System.out.println(per.getCar().getInfo()); //获取人的车信息
System.out.println();
//通过车找到人
System.out.println("此车的主人的基本信息为:");
System.out.println(car.getPer().getInfo());
}
}
输出结果:
此人拥有的车的基本信息为:
汽车品牌型号:宾利,汽车价格:8000000.0
此车的主人的基本信息为:
姓名:林强,年龄:29
Person和Car都是自定义类型,但是Person和Car都可以明确的描述出某一类群体,现在是针对群体关系作出的一种设置。
引用分析二:
自身关联:
现在已经确定好了人与车的关系,进一步完善。
例如:一个人肯定会有孩子,孩子会成年,成年后也会有车
package 常规类型题;
class Car {
private String name;
private double price;
private Person04 per; //一辆车属于一个人
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return this.price;
}
public void setPrice(double price) {
this.price = price;
}
public Person04 getPer() {
return this.per;
}
public void setPer(Person04 per) {
this.per = per;
}
public Car(String name, double price) {
this.name = name;
this.price = price;
}
public String getInfo() {
return "汽车品牌型号:" + this.name +
",汽车价格:" + this.price;
}
}
class Person04 {
private String name;
private int age;
private Car car; //一个人有一辆车
private Person04[] children; //一个人有多个孩子
public Person04(String name, int age) {
this.name = name;
this.age = age;
}
public void setChildren(Person04[] children) {
this.children = children;
}
public Person04[] getChildren() {
return this.children;
}
public Car getCar() {
return this.car;
}
public void setCar(Car car) {
this.car = car;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return this.age;
}
public void setAge(int age) {
this.age = age;
}
public String getInfo() {
return "姓名:" + this.name +
",年龄:" + this.age;
}
}
public class ArrayDemo4 {
public static void main(String[] args) {
//第一步:声明对象并且设置彼此的关系
Person04 per = new Person04("武说", 29);
Person04 childA = new Person04("林强", 18);
Person04 childB = new Person04("张三", 12);
//人有孩子
per.setChildren(new Person04[] {childA, childB});
//孩子有车
childA.setCar(new Car("BMW", 300000)); //匿名对象
childB.setCar(new Car("法拉利", 1500000));
Car car = new Car("宾利", 8000000.00);
per.setCar(car); //一个人有一辆车
car.setPer(per); //一辆车属于一个人
//第二步:根据关系获取数据,getCar()返回的是Car对象
//代码链
System.out.println("此人拥有的车的基本信息为:");
System.out.println(per.getCar().getInfo()); //获取人的车信息
System.out.println();
//通过车找到人
System.out.println("此车的主人的基本信息为:");
System.out.println(car.getPer().getInfo());
System.out.println("\n\n根据人找到所有的孩子以及孩子对应的汽车:");
//根据人找到所有的孩子以及孩子对应的汽车
for (int i = 0; i < per.getChildren().length; i++) {
System.out.println();
System.out.println("\t" + per.getChildren()[i].getInfo());
System.out.println("\t" + per.getChildren()[i].getCar().getInfo());
}
}
}
输出结果:
此人拥有的车的基本信息为:
汽车品牌型号:宾利,汽车价格:8000000.0
此车的主人的基本信息为:
姓名:武说,年龄:29
根据人找到所有的孩子以及孩子对应的汽车:
姓名:林强,年龄:18
汽车品牌型号:BMW,汽车价格:300000.0
姓名:张三,年龄:12
汽车品牌型号:法拉利,汽车价格:1500000.0