Java 面向对象 之 对象数组

简介:

http://www.verejava.com/?id=16992784958543

/**
    知识点: 对象数组
        1. 对象数组的使用
        2. 对象数组的foreach 增强for循环
        3. 可变参数

    题目:乘客一次只能带2个箱子免费上飞机
    思路:
        1. 抽象出类 乘客(Customer)  , 箱子(Box)
        2. 乘客和箱子的关系  1对2的关系 Box->Customer
*/
public class ObjectArray {
    
    public static void main(String[] args) {
        //实例化一个乘客
        Customer c = new Customer("黎明");

        //实例化两个箱子一个装衣服, 一个装书
        Box clothBox = new Box("装衣服");
        clothBox.setId(1);
        clothBox.setWeight(20);

        Box bookBox = new Box("装书");
        bookBox.setId(2);
        bookBox.setWeight(30);

        //将箱子添加到乘客
        c.addBox(clothBox);
        c.addBox(bookBox);

        //打印该乘客的信息
        System.out.println("乘客姓名: " + c.getName());
        System.out.println("箱子编号, 箱子重量, 箱子描述");
        Box[] boxes = c.getBoxes();
        for (Box box : boxes) {
            System.out.println(box.getId() + "," + box.getWeight() + "," + box.getDescription());
        }

        //测试可变参数
        Box[] boxes2 = { clothBox, bookBox };
        c.setBoxes();//不传参数
        c.setBoxes(clothBox);//传一个参数
        c.setBoxes(boxes2);//传一个数组
        boxes = c.getBoxes();
        for (Box box : boxes) {
            System.out.println(box.getId() + "," + box.getWeight() + "," + box.getDescription());
        }
    }
}

class Customer {
    
    private String name;//乘客名字
    private Box[] boxes = new Box[2];//箱子属于乘客, 添加箱子引用

    public Customer(String name) {
        this.name = name;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Box[] getBoxes() {
        return this.boxes;
    }

    //乘客携带添加的箱子
    //返回值: 如果添加成功返回true 否则false
    public boolean addBox(Box box) {
        for (int i = 0; i < boxes.length; i++) {
            if (boxes[i] == null) {
                boxes[i] = box;
                return true;
            }
        }
        return false;
    }

    public void setBoxes(Box... boxes) {
        this.boxes = boxes;
    }
}

class Box {
    private float weight;//箱子的重量
    private int id;//箱子的编号
    private String description;//描述

    public Box(String description) {
        this.description = description;
    }

    public String getDescription() {
        return this.description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public int getId() {
        return this.id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public float getWeight() {
        return this.weight;
    }

    public void setWeight(float weight) {
        this.weight = weight;
    }

}

http://www.verejava.com/?id=16992784958543

目录
相关文章
|
1月前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
25 1
|
2月前
|
安全 Java 编译器
Java对象一定分配在堆上吗?
本文探讨了Java对象的内存分配问题,重点介绍了JVM的逃逸分析技术及其优化策略。逃逸分析能判断对象是否会在作用域外被访问,从而决定对象是否需要分配到堆上。文章详细讲解了栈上分配、标量替换和同步消除三种优化策略,并通过示例代码说明了这些技术的应用场景。
Java对象一定分配在堆上吗?
|
2月前
|
JavaScript 前端开发 Java
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。如果你从我的文章中受益,欢迎关注我,我将持续更新更多优质内容。你的支持是我前进的动力!🎉🎉🎉
26 0
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
|
3月前
|
Java API
Java 对象释放与 finalize 方法
关于 Java 对象释放的疑惑解答,以及 finalize 方法的相关知识。
62 17
|
2月前
|
存储 安全 Java
Java编程中的对象序列化与反序列化
【10月更文挑战第22天】在Java的世界里,对象序列化和反序列化是数据持久化和网络传输的关键技术。本文将带你了解如何在Java中实现对象的序列化与反序列化,并探讨其背后的原理。通过实际代码示例,我们将一步步展示如何将复杂数据结构转换为字节流,以及如何将这些字节流还原为Java对象。文章还将讨论在使用序列化时应注意的安全性问题,以确保你的应用程序既高效又安全。
|
2月前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
45 2
|
3月前
|
存储 缓存 算法
Java 数组
【10月更文挑战第19天】Java 数组是一种非常实用的数据结构,它为我们提供了一种简单而有效的方式来存储和管理数据。通过合理地使用数组,我们能够提高程序的运行效率和代码的可读性。更加深入地了解和掌握 Java 数组的特性和应用,为我们的编程之旅增添更多的精彩。
39 4
|
3月前
|
存储 缓存 算法
提高 Java 数组性能的方法
【10月更文挑战第19天】深入探讨了提高 Java 数组性能的多种方法。通过合理运用这些策略,我们可以在处理数组时获得更好的性能表现,提升程序的运行效率。
47 2
|
3月前
|
存储 Java 数据管理
Java零基础-Java对象详解
【10月更文挑战第7天】Java零基础教学篇,手把手实践教学!
38 6
|
3月前
|
存储 Java
Java“(array) <X> Not Initialized” (数组未初始化)错误解决
在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。
105 2