第一次博客作业:三周题目总结

1.前言

一、知识点
关于类
1:类似于C语言的结构体,但比C语言中的结构体作用更多,且适用范围更广
2:懂得封装和公开的区别,即private和public的区别,用private可以防止数据的泄露
3:用类把题目分解,以便更好的解决题目,创立多个类,来分解题目。
4:在Java开发中,类是实现功能的基础。通过定义类,我们可以组织和管理代码,实现各种复杂的功能和逻辑。
5:此外,类还可以作为数据类型使用,用于创建和操作对象。因此,掌握Java中的类及其相关特性,对于编写高质量、可维护的Java代码至关重要。
关于列表
1:ArrayList:基于动态数组实现,查询效率高,但插入和删除操作可能会涉及元素的移动,效率相对较低
2:使用列表能更好的存储题目数据,且能更好的访问其中的元素
3:懂得这些函数的用法add()remove()......
关于哈希表
1:哈希表通过哈希函数将键(Key)映射到存储桶(Bucket)中,从而实现对数据的快速查找。
2:使用哈希表能简便代码,更好的解题。
3:懂得这些函数put(K key, V value)get(Object key)remove(Object key)....用法
关于正则表达式
基本元素

  1. 普通字符:匹配与之相同的字符。
  2. 元字符:具有特殊含义的字符,用于定义模式。
    .:匹配任意单个字符(除了换行符)。
    *:匹配前面的子表达式零次或多次。
    +:匹配前面的子表达式一次或多次。
    ?:匹配前面的子表达式零次或一次。
    {n}:匹配前面的子表达式恰好n次。
    {n,}:匹配前面的子表达式至少n次。
    {n,m}:匹配前面的子表达式至少n次,但不超过m次。
  3. 字符类:匹配方括号中的任意一个字符。
    [abc]:匹配字符a、b或c。
    [^abc]:匹配任何不是a、b或c的字符。
    [a-z]:匹配任何小写字母。
    [A-Z]:匹配任何大写字母。
    [0-9]:匹配任何数字。
  4. 转义字符:用于匹配具有特殊含义的字符。
    \:转义字符,用于匹配特殊字符本身。
    \d:匹配一个数字字符。等价于[0-9]。
    \D:匹配一个非数字字符。等价于[^0-9]。
    \w:匹配包括下划线的任何单词字符。等价于[A-Za-z0-9_]。
    \W:匹配任何非单词字符。等价于[^A-Za-z0-9_]。
    \s:匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。
    \S:匹配任何非空白字符。等价于[^ \f\n\r\t\v]。
    常用功能
  5. 边界匹配:
    ^:匹配输入字符串的开始位置。
    $:匹配输入字符串的结束位置。
    \b:匹配一个单词边界,即字与空格间的位置。
    \B:非单词边界匹配。
  6. 选择、分组与引用:
    |:或运算符,匹配左右任意一个表达式。
    ():捕获括号,将多个字符组合为一个整体,并可以对其进行引用(通过\1、\2等)。
    (?:...):非捕获括号,只作为分组,不捕获匹配的文本。
    (?=...):正向前瞻断言,确保之后的模式匹配,但不消耗任何字符。
    (?!...):负向前瞻断言,确保之后的模式不匹配。
  7. 预定义模式:
    \d+:匹配一个或多个数字。
    \w+:匹配一个或多个单词字符。
    \s+:匹配一个或多个空白字符。
    \D+、\W+、\S+:分别匹配一个或多个非数字、非单词、非空白字符。
  8. 标志位:
    g:全局搜索。
    i:不区分大小写搜索。
    m:多行搜索。
    u:启用unicode模式的处理。
    y:执行粘性搜索,只匹配从目标字符串的当前位置开始可以匹配的字符串。
    注意事项
    • 正则表达式是大小写敏感的,但可以通过设置标志位i来忽略大小写。
    • 正则表达式的性能与复杂度有关,复杂的模式可能导致性能下降。
    • 在不同的编程语言和工具中,正则表达式的语法和功能可能有所差异,因此在使用时需要查阅相关文档。
    通过掌握这些基本元素和常用功能,你可以构建出各种复杂的正则表达式来匹配和处理文本数据

二、作业
第一次作业
难度不大,题量适中,但最后一题较难,对没有准备好的学生难度较大
第二次作业
难度渐渐提高,题量适中,但还是难在最后一题,且又要用新的知识
第三次作业
难度再次提高,题量适中,最后一题难度较大

2.第一次作业的设计与分析

设计思路:
我建立了一个类用来存储题目数据,题目编号,试卷编号等,创立一个循环,并用正则表达式来获取题目数据
并用列表来存储题目,然后转成数组用循环进行比较,来判断题目对错,并且输出题目,答案和得分情况
采坑心得:
1:要正确使用正则表达式来获取题目数据,表达式的正确决定了你的获取。
2:合理运用循环,且浅显易懂
改进建议:
多用列表存储,可以不转数组,列表中有很多函数,可以减少循环,简化代码

3.第二次作业的设计与分析

设计与分析:
我创立了三个类,用来存储题目,答卷,试卷,且用列表来存储数据。
答卷类中有个列表,用来存储答案,用来保证答卷号和答案对应
试卷类中也创立了个列表,用来存储题目和题目分值
使用一个循环,来获取每一行的数据,用if语句来判断这个数据是试卷,答卷或题目
然后用正则表达式获取数据并存到列表中,然后列表转数组,用循环比较每个题目是否正确,并输出最后的得分情况
踩坑心得:
有两个得分点一直过不去,可能是正则表达式的问题
或者是循环嵌套的问题,应多测试正则表达式的正确性
改进建议:
使用哈希表,能减少循环的嵌套,且哈希表能迅速获取题目数据。

4.第三次作业的设计与分析


设计与分析:
我设计了四个类,用来存储题目,答卷,试卷,
试卷类中创立了一课用来存储类的哈希表,这个类中包含题目序号和题目分值,这就是第四个类的作用
答卷类中也创立了一个哈希表用来存储题目序号和题目答案
我用创立了三个哈希表用来存储题目,答卷,试卷。
哈希表的键值,表示题目序号,答卷号,试卷号这样可以更快的匹配答卷和试卷,也能快速的获取题目
使用一个循环,来获取每一行的数据,用if语句来判断这个数据是试卷,答卷或题目
然后用正则表达式获取数据并存到哈希表中,使用哈希表中自带的函数,来判断题目的正确
最后输出得分情况
踩坑心得:
没有考虑答案为空的情况,和题目的乱序输出
改进建议:
使用继承来减少类的数量,多使用哈希表

5.总结

本阶段三次题目集综合性总结

在本阶段的三次题目集完成过程中,我深入学习了Java类的定义与使用、Java列表(List)的基本操作、Java哈希表(HashMap)的数据结构以及Java正则表达式的应用。通过实践,我对这些知识点有了更为深刻的理解。

学到的内容

Java类:我学会了如何定义Java类,包括类的属性、构造方法、成员方法等的编写。通过创建对象,我能够调用类中的方法来执行特定的任务。此外,我还学习了类的继承、封装和多态等面向对象编程的基本概念。

Java列表:我掌握了Java中List接口及其实现类(如ArrayList、LinkedList)的使用。我学会了如何添加、删除、查找和遍历列表中的元素,以及如何使用迭代器对列表进行迭代操作。

Java哈希表:通过本阶段的学习,我了解了HashMap的工作原理,包括其存储键值对的方式以及哈希函数的应用。我能够使用HashMap来存储和检索数据,提高了数据处理的效率。

Java正则表达式:我学习了正则表达式的语法和Java中Pattern和Matcher类的使用。通过正则表达式,我能够匹配、查找和替换字符串中的特定模式,为文本处理提供了强大的工具。

需要进一步学习及研究的地方

Java集合框架:虽然我已经学习了List和HashMap,但Java集合框架还包括其他许多有用的接口和类,如Set、Queue等。我计划进一步学习这些集合类的使用场景和特性。

Java泛型:泛型是Java提供的一种类型安全的数据结构,能够避免类型转换时的ClassCastException。我将继续深入学习泛型在Java集合框架中的应用。

Java I/O流:本阶段并未涉及Java的输入输出流操作,这是Java编程中非常重要的一部分。我计划学习如何使用Java的I/O流进行文件读写和网络通信。

对教师、课程、作业、实验等方面的建议

教师:教师在授课过程中能够结合实例进行讲解,多回答学生的问题。

课程:课程内容安排合理,难度适中。建议课程能够增加一些前沿技术的介绍,让学生了解Java在当今技术发展中的最新应用。

作业与实验:作业和实验的设计能够很好地检验学生对知识点的掌握情况。建议增加一些具有挑战性的题目,激发学生的探索欲望和解决问题的能力。

课上及课下组织方式:课上互动氛围良好,学生能够积极参与讨论。建议课下能够提供一些学习资源和辅导材料,方便学生进行自主学习和巩固知识。

总的来说,本阶段的学习让我对Java编程有了更深入的了解,也为我后续的学习打下了坚实的基础。我将继续努力,不断提升自己的编程能力。

posted @ 2024-04-18 09:13  23201113-陈梓豪  阅读(54)  评论(2)    收藏  举报