当前位置: 首页 > news >正文

【java】集合练习2

Student.java:保存学生类的定义。

public class Student {
    private String name;
    private int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() { return name; }
    public int getAge() { return age; }

    @Override
    public String toString() {
        return "Student{name='" + name + "', age=" + age + "}";
    }
}

 

 StudentCollectionExample.java:保存主程序逻辑。

import java.util.ArrayList;
import java.util.List;

public class StudentCollectionExample {
    public static void main(String[] args) {
        List<Student> studentList = new ArrayList<>();
        studentList.add(new Student("张三", 20));
        studentList.add(new Student("李四", 22));
        studentList.add(new Student("王五", 21));

        for (Student student : studentList) {
            System.out.println(student);
        }
    }
}

运行 StudentCollectionExample.java

在Java中,将Student类和StudentCollectionExample类分开写入两个不同的文件是由于以下原因:


1. Java的语法规定

  • 每个公共类必须独占一个文件
    Java要求每个被声明为public的类必须保存在与类名完全一致的.java文件中。例如:

    • public class Student → 必须保存在Student.java中。

    • public class StudentCollectionExample → 必须保存在StudentCollectionExample.java中。

  • 一个文件中只能有一个公共类
    如果尝试将两个公共类放在同一个文件中,编译器会报错:

    java

    // 错误示例:StudentCollectionExample.java
    public class Student { /* ... */ }        // 公共类
    public class StudentCollectionExample { /* ... */ }  // 另一个公共类
    
    // 编译错误:StudentCollectionExample.java 文件中只能有一个公共类

2. 代码的可维护性与模块化

  • 逻辑分离
    Student类负责定义学生对象的属性和行为,而StudentCollectionExample类负责操作集合和主程序逻辑。分开文件后,职责清晰,便于修改和扩展。

  • 避免命名冲突
    如果多个类分散在独立的文件中,可以避免类名重复导致的冲突,尤其是在大型项目中。

  • 代码复用
    Student类可能被其他程序(如教师管理、成绩统计)复用。单独保存为Student.java后,其他文件只需导入该类即可使用。


3. 编译与运行的依赖关系

  • 编译顺序
    StudentCollectionExample类依赖Student类。如果两个类分开保存,编译器可以按需编译:

    bash

    javac Student.java StudentCollectionExample.java

    编译器会先编译Student.java生成Student.class,再编译StudentCollectionExample.java

  • 运行主类
    最终运行主类时,Java虚拟机(JVM)需要找到所有依赖的类文件(如Student.class):

    bash

    java StudentCollectionExample

4. 例外情况

  • 非公共类可以共存
    如果一个类不是public的,它可以与其他类(包括一个public类)共存于同一文件中。例如:

    java

    // StudentCollectionExample.java
    class Student { /* ... */ }             // 非公共类
    public class StudentCollectionExample { /* ... */ }  // 公共类

    但这种方式不推荐,因为它会导致代码结构混乱,且Student类无法被其他包中的类访问。


5. 最佳实践

  • 一个类一个文件
    无论类是否为public,都应单独保存为独立的文件。这是Java社区的通用规范,有助于提高代码的可读性和维护性。

  • 包管理
    如果项目规模扩大,可以通过包(package)进一步组织类文件。例如:

    • Student.java → com.example.model.Student

    • StudentCollectionExample.java → com.example.main.StudentCollectionExample


总结

分开编写这两个Java文件的原因:

  1. 语法强制要求:公共类必须独占文件。

  2. 代码结构清晰:职责分离,便于维护和复用。

  3. 编译与运行依赖:确保编译器能正确解析类之间的依赖关系。

总结:

相关文章:

  • Chapter 4-11. Troubleshooting Congestion in Fibre Channel Fabrics
  • Nest系列:在 NestJS 中使用 Joi 进行环境变量验证与配置管理-03
  • Navicat如何查看密码
  • Chrome 浏览器的很多扩展不能用了
  • 数字签名与非对称加密的区别
  • LLM论文笔记 24: A Theory for Length Generalization in Learning to Reason
  • AJAX PHP:深入理解与实际应用
  • 【WEB APIs】DOM-节点操作
  • 本地部署Deep Seek-R1,搭建个人知识库——笔记
  • Spring Boot使用线程池创建多线程
  • 人工智能驱动数字孪生城市的实践探索
  • 《AI生成文章SEO 长尾关键词下拉词相关词抓取工具 SEO 裂变工具:高效驱动网站流量增长》
  • qq音乐 webpack 补环境
  • Unity3D仿星露谷物语开发31之设置地面属性方法探索
  • K8S学习之基础三十一:k8s中RBAC 的核心概念
  • MySQL的行级锁锁的到底是什么?
  • 深入探讨RAID 5的性能与容错能力:实验与分析(磁盘阵列)
  • 深入理解 IP、子网掩码、端口号和协议
  • 快速上手网络通信 -- Qt Network应用开发
  • vulhub/log4j2漏洞靶场----反弹shell
  • 中方发布会:中美经贸高层会谈取得了实质性进展,达成了重要共识
  • 巴基斯坦称回应挑衅,对印度发起军事行动
  • 马上评|比余华与史铁生的友情更动人的是什么
  • 罗氏制药全新生物制药生产基地投资项目在沪启动:预计投资20.4亿元,2031年投产
  • 娱见 | 为了撕番而脱粉,内娱粉丝为何如此在乎番位
  • 罗马尼亚临时总统博洛让任命普雷多尤为看守政府总理