杰瑞科技汇

Java程序设计教程与实验

《Java程序设计教程与实验》

第一部分:核心教程 - 理论基础

本部分将Java的核心知识体系分解为循序渐进的模块,每个模块都配有核心概念、关键语法和示例代码。

Java程序设计教程与实验-图1
(图片来源网络,侵删)

Java入门与环境搭建

  • 核心概念:
    • Java是什么: 一次编写,到处运行的跨平台语言。
    • JDK, JRE, JVM的关系: JDK (Java Development Kit) 用于开发,JRE (Java Runtime Environment) 用于运行,JVM (Java Virtual Machine) 是Java虚拟机,实现跨平台的核心。
    • 环境变量配置: 设置 JAVA_HOMEPATH,以便在命令行中使用 javacjava 命令。
  • 关键语法:
    • 第一个程序 HelloWorld.java:
      public class HelloWorld {
          public static void main(String[] args) {
              System.out.println("Hello, World!");
          }
      }
    • 程序结构: public class, main 方法, 代码块 。
    • 注释: 单行注释 , 多行注释 , 文档注释 。

Java基础语法

  • 核心概念:

    • 变量与数据类型: int, double, char, boolean, String
    • 常量: final 关键字。
    • 运算符: 算术、关系、逻辑、赋值、三元运算符。
    • 类型转换: 自动类型提升和强制类型转换。
  • 关键语法:

    int age = 25;
    double price = 99.99;
    char grade = 'A';
    boolean isStudent = true;
    final double PI = 3.14159;
    // 类型转换
    int intVal = (int) 3.14; // 强制转换,结果为 3

流程控制

  • 核心概念:

    • 顺序结构: 代码从上到下依次执行。
    • 选择结构: 根据条件执行不同的代码块。
    • 循环结构: 重复执行某段代码。
  • 关键语法:

    Java程序设计教程与实验-图2
    (图片来源网络,侵删)
    • 选择: if-else, if-else if-else, switch-case
    • 循环: for, while, do-while
    • 跳转: break (跳出循环), continue (跳过本次循环)。
      // for循环示例
      for (int i = 1; i <= 5; i++) {
      System.out.println("当前是第 " + i + " 次循环");
      }

    // if-else示例 if (score >= 90) { System.out.println("优秀"); } else if (score >= 60) { System.out.println("及格"); } else { System.out.println("不及格"); }


数组

  • 核心概念:

    • 数组: 存储固定大小、相同类型元素的容器。
    • 索引: 从0开始的整数,用于访问数组元素。
    • 数组长度: array.length
  • 关键语法:

    // 声明并初始化
    int[] numbers = new int[5]; // 创建一个长度为5的int数组
    String[] names = {"Alice", "Bob", "Charlie"}; // 静态初始化
    // 访问和修改
    numbers[0] = 10;
    System.out.println(names[1]); // 输出 Bob
    // 遍历数组
    for (int i = 0; i < names.length; i++) {
        System.out.println(names[i]);
    }

面向对象编程

  • 核心概念:

    • 类与对象: 类是模板,对象是实例。类 -> 对象 (汽车设计图 -> 一辆具体的汽车)。
    • 三大特性:
      • 封装: 将数据(属性)和操作数据的方法(行为)捆绑在一起,并隐藏内部实现细节(通过 privatepublic)。
      • 继承: 子类继承父类的属性和方法,实现代码复用(extends)。
      • 多态: 同一个接口,使用不同的实例而执行不同操作(父类引用指向子类对象)。
  • 关键语法:

    • 类定义:

      public class Student {
          // 属性 (成员变量)
          private String name;
          private int age;
          // 构造方法
          public Student(String name, int age) {
              this.name = name;
              this.age = age;
          }
          // 方法 (行为)
          public void study() {
              System.out.println(name + " is studying.");
          }
          // Getter 和 Setter (封装的体现)
          public String getName() {
              return name;
          }
      }
    • 继承:

      public class GraduateStudent extends Student {
          public GraduateStudent(String name, int age) {
              super(name, age); // 调用父类构造方法
          }
          @Override
          public void study() {
              System.out.println(getName() + " is doing research.");
          }
      }

常用API

  • 核心概念:

    • API (Application Programming Interface): Java类库提供的预定义功能。
    • 字符串处理: String, StringBuilder, StringBuffer
    • 集合框架: List, Set, Map 等接口及其实现类 (ArrayList, HashSet, HashMap)。
    • 工具类: Math, Arrays, Date / LocalDate
  • 关键语法:

    // String
    String s1 = "Hello";
    String s2 = s1.concat(" Java"); // s2 = "Hello Java"
    // ArrayList
    ArrayList<String> list = new ArrayList<>();
    list.add("Apple");
    list.add("Banana");
    System.out.println(list.get(0)); // 输出 Apple
    // HashMap
    HashMap<String, Integer> scores = new HashMap<>();
    scores.put("Alice", 95);
    System.out.println(scores.get("Alice")); // 输出 95

异常处理

  • 核心概念:
    • 异常: 程序运行时出现的错误。
    • 异常处理机制: 使用 try-catch-finally 结构捕获和处理异常,使程序更健壮。
  • 关键语法:
    try {
        int result = 10 / 0; // 会抛出 ArithmeticException
    } catch (ArithmeticException e) {
        System.out.println("发生算术异常: " + e.getMessage());
    } finally {
        System.out.println("无论是否发生异常,这里都会执行。");
    }

I/O流与文件操作

  • 核心概念:

    • : 数据在源和目的地之间的有序序列。
    • 字节流 vs 字符流: InputStream/OutputStream (处理字节), Reader/Writer (处理字符)。
    • 文件读写: 使用 FileInputStream, FileOutputStream, FileReader, FileWriter 等类。
  • 关键语法:

    // 写入文件
    try (FileWriter writer = new FileWriter("test.txt")) {
        writer.write("Hello, File!");
    } catch (IOException e) {
        e.printStackTrace();
    }
    // 读取文件
    try (FileReader reader = new FileReader("test.txt")) {
        char[] buffer = new char[1024];
        int charsRead = reader.read(buffer);
        System.out.println(new String(buffer, 0, charsRead));
    } catch (IOException e) {
        e.printStackTrace();
    }

多线程

  • 核心概念:

    • 进程与线程: 进程是资源分配的基本单位,线程是CPU调度的基本单位,一个进程可以包含多个线程。
    • 创建线程的方式:
      1. 继承 Thread 类。
      2. 实现 Runnable 接口(更常用)。
    • 线程同步: 当多个线程访问共享资源时,需要使用 synchronized 关键字或锁来避免数据冲突。
  • 关键语法:

    // 实现 Runnable 接口
    class MyTask implements Runnable {
        @Override
        public void run() {
            for (int i = 0; i < 5; i++) {
                System.out.println(Thread.currentThread().getName() + " is running...");
                try {
                    Thread.sleep(1000); // 休眠1秒
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    public class Main {
        public static void main(String[] args) {
            Thread thread1 = new Thread(new MyTask(), "Thread-A");
            Thread thread2 = new Thread(new MyTask(), "Thread-B");
            thread1.start();
            thread2.start();
        }
    }

第二部分:实验项目 - 动手实践

理论学习必须通过实践来巩固,以下是按难度递增设计的实验项目。

控制台计算器

  • 目标: 熟练掌握基本语法、流程控制、输入输出。
  • 要求:
    1. 程序启动后,提示用户输入两个数字和一个运算符 (+, -, *, /)。
    2. 根据用户输入,计算并输出结果。
    3. 处理简单的异常情况,如除数为0、输入非法字符等。
  • 知识点: Scanner, if-else, switch-case, try-catch

学生信息管理系统

  • 目标: 掌握面向对象编程、数组/集合的使用。
  • 要求:
    1. 定义一个 Student 类,包含学号、姓名、年龄、成绩等属性。
    2. 使用 ArrayList<Student> 来存储学生对象。
    3. 实现以下功能:
      • 添加学生
      • 根据学号删除学生
      • 根据学号查找学生并显示信息
      • 显示所有学生信息
      • 按成绩排序学生
  • 知识点: 类、对象、构造方法、ArrayListfor 循环、if 判断。

图书管理系统

  • 目标: 深入理解OOP(继承、多态),并开始接触文件I/O。
  • 要求:
    1. 设计一个 Book 基类,包含书名、作者、ISBN号等。
    2. 创建 EBook (电子书) 和 PrintedBook (纸质书) 子类,分别添加特有属性(如文件大小、页数)。
    3. 使用 ArrayList<Book> 管理所有图书。
    4. 实现增、删、查、改功能。
    5. 扩展功能: 将所有图书信息保存到文件中,并在程序启动时从文件加载。
  • 知识点: 继承、多态、ArrayList、文件读写 (FileWriter, FileReader 或更高级的 ObjectOutputStream)。

多线程下载模拟器

  • 目标: 掌握多线程的基本概念和使用。
  • 要求:
    1. 模拟一个文件下载过程。
    2. 用户指定文件大小(如100MB)和线程数(如4个)。
    3. 创建多个线程,每个线程负责下载文件的一部分。
    4. 每个线程打印自己的下载进度("线程1: 已下载 25MB")。
    5. 所有线程下载完成后,主线程打印 "下载完成!"。
  • 知识点: Thread / Runnable, synchronized (如果需要控制共享资源), start(), sleep()

简单的聊天室

  • 目标: 综合运用多线程、网络编程、集合等高级知识。
  • 要求:
    1. 服务器端:
      • 监听特定端口,等待客户端连接。
      • 当一个客户端连接时,为它创建一个新的 ServerThread 来处理通信。
      • 维护一个所有客户端线程的集合。
      • 当一个客户端发送消息时,服务器将该消息广播给所有其他客户端。
    2. 客户端:
      • 连接到服务器。
      • 启动一个线程用于接收服务器转发的消息。
      • 主线程用于从控制台读取用户输入并发送给服务器。
  • 知识点: Socket, ServerSocket, 多线程,HashMap / ArrayList (管理客户端连接)。

第三部分:学习资源推荐

  • 经典书籍:
    • 入门: 《Java核心技术 卷I:基础知识》(Cay S. Horstmann) - 内容详实,讲解透彻。
    • 进阶: 《Effective Java》(Joshua Bloch) - Java编程的最佳实践,必读经典。
    • 工具: 《Head First设计模式》 - 以轻松有趣的方式讲解设计模式。
  • 在线教程:
    • 菜鸟教程: 提供快速入门的语法和示例。
    • W3Schools: 同样是很好的快速参考网站。
    • B站/慕课网: 大量免费和付费的视频课程,适合喜欢看视频学习的同学。
  • 官方文档:
    • Oracle Java Documentation: 最权威、最准确的资料,学会查阅官方文档是成为优秀程序员的关键。
  • 开发工具:
    • IDE (集成开发环境): IntelliJ IDEA (社区版免费,强烈推荐) 或 Eclipse
    • 构建工具: MavenGradle,用于项目管理和依赖管理。

学习建议

  1. 多动手,少看视频: 看懂不等于会写,一定要亲手敲代码,哪怕是最简单的例子。
  2. 调试是关键: 学会使用IDE的调试功能(设置断点、单步执行、查看变量),这是解决bug最强大的武器。
  3. 理解“为什么”: 不要只记住语法,要理解其背后的设计思想和原理,为什么要有接口?为什么多线程需要同步?
  4. 阅读优秀代码: 在GitHub上找一些优秀的开源Java项目,阅读它们的源码,学习别人的设计思路和编码风格。
  5. 循序渐进: 不要急于求成,把基础打牢,再挑战复杂的项目,每一个实验项目都值得花时间去完成和思考。

希望这份详细的《Java程序设计教程与实验》指南能对您的学习之路有所帮助!祝您学习愉快!

分享:
扫描分享到社交APP
上一篇
下一篇