Java课程总结
一、前言:
时间过得很快,这个学期的Java课程眼看就要落下帷幕了,这应该也是最后一个作业了吧,作为一个软件工程的学生,这是我接触到的第二个编程语言,和上学期的c语言一样,都是才接触的时候难,接触多了也不简单,随着课程的深入,知识点的加深,这门课程是越来越难了,每周都有折磨人的pta作业,这是我们训练技能的基础,然后还有实验,五次实验更是大强度,反正是要花大量的时间之后才能完成的,但是能为我们灵活的运用知识点提供了训练的舞台,线上课程的教学我认为是非常好的,可以为我们提供了复习的资源,课上没有听懂的知识点,可以通过下来观看学堂在线的视频重新学习。之后就是这个blog作业,为我们一段时间的学习后的总结有很大的帮助。
二、面向对象技术总结
刚学封装的时候,我还以为把属性设成private,写几个get和set方法就完事了。结果实际写代码才发现,这根本不是单纯藏数据!比如给对象设属性值,还得考虑各种限制条件,像年龄不能是负数、金额不能小于 0。我好几次写代码都忘记检查,一运行就出问题,debug 的时候真的要崩溃,现在总算明白,封装就像给数据上了个保险,得保证数据安全,可我有时候还是会疏忽。
二、继承:继承了 “痛苦”
继承这概念听着挺简单,子类继承父类的东西嘛。实验有动物类的题目,我写了大象类继承动物类,构造函数的调用直接把我搞懵了!子类初始化的时候到底什么时候调用父类构造函数?super关键字怎么用?我对着代码调试了好久才搞清楚。而且 Java 居然不支持多重继承,这和我想象的不太一样,不过后来用接口实现了类似的功能,感觉稍微好点,但还是不太熟练,总担心写错继承关系。
三、多态:最让人摸不着头脑
while 循环:写累加条件时总是忘记边界值,比如需要>=0却写成>0,导致少加一个数。
List 遍历:用for-each循环输出 List 时,经常遇到null值,不知道该怎么过滤。直接用if (element != null)判断会报空指针异常,后来才知道要先检查 List 是否为null,再遍历元素。
浮点数格式化:在计算商品折扣时,我直接return String.format("%.2f", price * discount),以为返回的还是double,结果编译报错。正确做法是先计算折扣后的值,最后在输出时格式化
抽象方法复写:父类定义了抽象方法,子类忘记复写,编译报错。比如:
方法重写规则:重写方法时缩小访问权限,比如父类方法是public,子类写成private,导致编译失败。
ArrayList 越界:用list.get(index)时不检查索引范围,导致IndexOutOfBoundsException。
HashMap 键重复:以为相同内容的对象作为键会覆盖值,结果没有重写hashCode()和equals(),导致键重复存储。
空指针异常:调用null对象的方法,比如:
捕获异常后不处理:catch块里只写e.printStackTrace(),不解决问题,导致程序后续逻辑混乱。
电梯调度算法:实验课写电梯模拟程序,不知道如何设计状态转换逻辑,坐在电脑前 3 小时写不出一行代码。后来发现要先画流程图,再分状态实现。
递归爆栈:写递归方法时忘记终止条件,导致StackOverflowError,比如:
不会用断点:程序出错时只会加System.out.println打印变量值,不会用 IDE 的调试功能,效率极低。
多线程调试:遇到线程安全问题时完全抓瞎,不知道如何查看线程状态和变量值。
文件读写乱码:读取中文文件时不指定编码,导致乱码,比如:
Scanner 遗留问题:先调用nextInt()再调用nextLine()时,会吞掉换行符,导致输入异常。
四、建议与总结
回望这学期的Java课程,有痛苦也有些许成就感,不可否认的是不知道骂过多少次这个课程,因为因为实在是太难了,写代码是一个复查的情绪过程,这是我的缺点,不过写代码也能学到些东西的。这里我十分的的想提出建议,真的真的Java的任务确实对于我这种资质平庸的学生来说任务确实确实是太重了,导致要花很多时间在Java上,真的没有时间放在其他的课程上了,导致Java死命的学,其他课程根本没有时间去花心思,导致我的数学半期考试都没有考到理想的分数,每次Java又是pta又是实验又是线上课堂又是blog作业又是翻转课堂的每一个任务都会花费我的大量时间,我不是说这些任务不好,我承认这些任务都是对我们的发展起到非常好的锻炼的,但是但是真的真的实在是太多了,感觉有些适得其反了。占了我学习的太多时间,导致分到其他科目的时间真的真的太少了,我总不可能只学Java吧。以上只是经我一学期学习下来的真是感受。我不是在抱怨,我只是在根据我真实的感受发表我的心声。最后感谢老师的悉心教导。展望未来,我深知 Java 的海洋浩瀚无垠,我所掌握的仅是冰山一角。我将持续学习,不断实践,努力在编程的道路上走得更深更远。
浙公网安备 33010602011771号