# 西建大iOS Club Java学习项目 **Repository Path**: XAUATiOSClub/learn-java ## Basic Information - **Project Name**: 西建大iOS Club Java学习项目 - **Description**: 西建大iOS Club Java学习项目 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-23 - **Last Updated**: 2025-08-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 西建大iOS Club Java学习项目 > 如果已经会Java语言了,直接跳过Java基础学习章节 > > 如果你学过C/C++/Python语言,那第一周和第二周的学习任务可以合并成一周 > > 如果你学过C#语言,第一周请把Java学完 #### 第1周:Java基础 - 入门与基本语法 * **学习任务:** Java概述、环境配置、基本数据类型、变量、运算符、流程控制语句(if/else, switch, for, while)。 * **实践任务:** * **控制台计算器:** 编写一个简单的Java控制台程序,实现加减乘除四则运算。 * **用户登录模拟:** 模拟一个简单的用户登录验证,判断用户名和密码是否正确(硬编码用户名和密码即可)。 #### 第2周:Java基础 - 数组与面向对象(上) * **学习任务:** 数组(一维、多维数组),面向对象基础(类与对象、封装、构造方法、`this`关键字)。 * **实践任务:** * **学生信息管理系统(控制台版-数组):** 使用数组存储学生姓名、年龄等信息,实现简单的增删改查功能。 * **图书类设计:** 设计一个`Book`类,包含书名、作者、价格等属性和显示图书信息的方法。 #### 第3周:Java基础 - 面向对象(下)与异常 * **学习任务:** 面向对象特性(继承、多态、`super`关键字、方法重写与重载)、`final`关键字、抽象类与接口、异常处理(try-catch-finally)。 * **实践任务:** * **动物世界模拟:** 设计`Animal`抽象类,派生出`Dog`、`Cat`等子类,演示继承和多态。 * **自定义异常与健壮性:** 在第2周的学生信息管理系统中引入异常处理,例如处理非法输入等,并尝试定义一个简单的自定义异常。 #### 第4周:Java基础 - 常用类与容器初步 * **学习任务:** 常用Java类(`String`、`StringBuilder`、日期时间API如`Date`、`Calendar`、`LocalDateTime`、包装类);集合框架基础(`ArrayList`、`HashSet`、`HashMap`的初步使用)。 * **实践任务:** * **日程管理小工具:** 使用`LocalDateTime`等处理日期时间,实现添加日程、查询未来日程的功能。 * **“你画我猜”单词本:** 使用`HashMap`存储单词及其解释,实现通过单词查询解释的功能(可加入随即抽取单词进行“猜词”)。 #### 第5周:Java基础 - IO流 * **学习任务:** IO流概述、字节流(`FileInputStream`、`FileOutputStream`)、字符流(`FileReader`、`FileWriter`)、缓冲流、对象流、文件操作。 * **实践任务:** * **学生信息持久化:** 扩展第3周的学生信息管理系统,实现将学生数据保存到文件(例如CSV或txt文件)和从文件加载数据的功能。 * **简单的文本加密/解密:** 编写程序读取一个文本文件,对其内容进行简单的加密(例如每个字符ASCII值+1)后写入另一个文件,并实现解密功能。 #### (选学):Java基础 - 多线程与网络编程 * **学习任务:** 多线程(创建、生命周期、同步、线程池),网络编程(Socket编程基础:TCP客户端和服务端)。 * **实践任务:** * **多线程秒表:** 编写一个多线程程序,模拟一个秒表,可以启动、暂停、复位。 * **简易聊天室(单客户端):** 实现一个简单的TCP聊天程序,一个服务端可以与一个客户端进行双向通信。 #### 第6周:Java ORM - JDBC与数据库连接池 * **学习任务:** 数据库基础(SQL复习)、JDBC核心API(`Connection`、`Statement`、`PreparedStatement`、`ResultSet`)、事务管理、主流数据库连接池(Druid或HikariCP)的原理与使用。 * **实践任务:** * **JDBC版学生管理系统:** 将第5周的学生信息管理系统的数据存储层切换为MySQL或PostgreSQL数据库,使用JDBC实现对学生信息的增删改查操作,并引入数据库连接池。 #### 第7周:Java ORM - MyBatis核心 * **学习任务:** ORM概念、MyBatis框架概述、MyBatis基本配置(`SqlSessionFactory`)、Mapper接口与XML映射文件、CRUD操作(`select`、`insert`、`update`、`delete`)。 * **实践任务:** * **MyBatis版学生管理系统:** 重构第7周的学生管理系统,用MyBatis取代纯JDBC,实现学生信息的增删改查。体验MyBatis带来的SQL与Java代码分离的便利。 #### 第8周:Java ORM - MyBatis高级 * **学习任务:** 动态SQL(`if`、`where`、`set`、`foreach`等)、结果映射、关联查询(一对一、一对多、多对多)、缓存机制、枚举类型处理器。 * **实践任务:** * **博客系统数据层:** 设计一个简单的博客系统数据库(用户、文章、评论),使用MyBatis实现用户注册、文章发布、评论发表、文章列表及其作者和评论数量查询(使用关联映射和动态SQL)。 #### 第9周:Spring - IoC与DI * **学习任务:** Spring框架概述、IoC(控制反转)容器、DI(依赖注入)、Bean的定义与配置(XML和注解方式)、Bean的作用域与生命周期。 * **实践任务:** * **Spring版学生服务:** 将第8周学生管理系统的服务层(如StudentService)改造为Spring管理的Bean,使用依赖注入方式管理DAO层的依赖,体验IoC的便利。 #### 第10周:Spring - AOP与事务管理 * **学习任务:** AOP(面向切面编程)概念、代理模式、Spring AOP实现(切点表达式、通知类型)、Spring声明式事务管理(基于XML和注解)。 * **实践任务:** * **日志与事务切面:** 为第10周的学生服务添加AOP日志切面,记录方法执行时间或参数。为数据库操作方法添加Spring的声明式事务管理。 #### 第11周:Spring MVC - Web开发基础 * **学习任务:** MVC设计模式、Spring MVC核心组件(`DispatcherServlet`、`Controller`、`Service`、`Repository`、`ViewResolver`)、请求映射、参数绑定、重定向与转发。 * **实践任务:** * **Web版学生管理系统:** 基于Spring MVC搭建一个Web应用,实现学生信息的网页展示、添加、修改和删除功能。使用简单的JSP或Thymeleaf作为视图层。 #### 第12周:Spring Boot - 快速开发 * **学习任务:** Spring Boot核心特性(起步依赖、自动配置)、项目结构、配置文件(`application.properties`/`application.yml`)、内嵌Tomcat、打包装。 * **实践任务:** * **Spring Boot版学生管理系统:** 将第12周的Spring MVC项目改造为Spring Boot项目,简化配置,并尝试使用Spring Data JPA进行数据访问(或继续使用MyBatis集成)。 #### 第13周:Spring Boot进阶与数据访问 * **学习任务:** Spring Data JPA深度(实体、Repository、自定义查询)、MyBatis与Spring Boot集成细节、RESTful API设计原则。 * **实践任务:** * **RESTful学生管理API:** 在Spring Boot项目基础上,提供一套符合RESTful规范的学生信息管理API接口。用Postman或其他工具测试接口。 #### (选学):Spring Security与高级概念 * **学习任务:** Spring Security入门(认证与授权)、过滤器链、基于表单的登录、内存用户与数据库用户、角色权限控制。了解微服务概念(Spring Cloud概览)。 * **实践任务:** * **API鉴权与权限控制:** 为第14周的学生管理API添加Spring Security,实现用户登录、基于角色的API访问控制。例如,只有管理员能添加/删除学生,普通用户只能查看。 --- **学习建议:** * **循序渐进:** 每周的学习任务和实践项目都建立在前一周的基础上,请务必扎实掌握。 * **多动手:** 理论学习与实践并行,通过编写代码深入理解概念。 * **查阅文档:** 遇到问题时,优先查阅官方文档、API文档以及Stack Overflow等技术社区。 * **保持好奇心:** 实践任务中可以尝试加入一些自己的创意,使其更有趣。 * **代码托管:** 将每周的代码提交到GitHub或Gitee,记录学习过程,也方便回顾。