前言:
大一下册结束,我对Java基础的学习也将结束,对于首次学习的我来说,面对第一次大作业,首先想到的是利用Al去写,而不是自己去面对,当我将题目复制给AI时,它给出的答案始终是错误的在这种情况下,出于“被逼无赖”我只能自己写,但慢慢的发现,其实自己也可以做的很好,通过pta的练习和几次大作业的磨练,自己对Java的认识也有所提高,以及打字速度,和对Java的熟练度都有所进步,同时希望自己在后面的学习依旧能够坚持,能够 取得进步。
从练习中学习:
第一次大作业:
第一次大作业是本学期最难的一道题目,他是在原本的题目基础上将题目改简单但我们还是做不出来,改正后的电梯原理是将每次所按楼层的第一个和现在的楼层以及方向进行比较,进而判断它接下来的运动方向以及楼层,而我没读懂题目,使接下来所写的代码适中在一条错误的道路上,进而导致他的测试点适中过不了,最后还是在室友的帮助下将代码写出来,由此可见,认真读题的重要性,以及认真讨论,发现错误的能力。其次对Java的认识不够,使我写出的代码错误层出不穷,待改进的地方依旧较多,例如我的第一大作业在第二次迭代后出现了难以在原来的代码上再次迭代的问题,进而导致我的第三次跌迭代难度大幅度上升,需要在原来的代码上大量改正。最后代码注释可以称的上重中之重,在改正,迭代,写代码的过程中,我因为没有写注释的习惯,使我在写代码时多次不知道自己写的是什么,写到哪里了,降低了我写代码的速度,浪费了我大量时间。
第二次大作业:
第二次大作业较第一次大作业难度有所下降,在这次的练习中我改正了在第一次的大作业中,出现的错误,也因此节约了时间,对Java的认识也有所进步,这次大作业主要写的就是他的计算方式,以及对多态和继承等几个知识点的学习。
实验练习:
实验的练习也是十分重要的,本学期的实验是围绕将动物存入电器,以及动物杀死动物进行的,要对冒泡,选择,插入,递归几种排序方法进行掌握,学会使用继承与多态方法的使用,进而减少代码的复杂度,便于进行理解,还要掌握对抽象类和接口的使用,这两种方法很重要,也可以适当学习工厂模式,第五次实验是比较难的实验,它要在前面迭代的实验中,用javafx的方法写出界面,因此要自己在网上寻找javafx的学习资料,加深对Javafx的学习。
面向对象技术的学习总结:
封装
我在代码中使用private修饰符封装类的属性(如Animal类的name、kg),并通过public方法(如getAttackValue())暴露访问接口,符合封装原则。
在Electric类中,通过add(Animal animal)方法控制动物添加逻辑,避免外部直接操作animals列表,体现了封装的保护性。但我在部分类的属性访问控制不够严格(如NewElevator的current属性未使用private修饰),可能导致外部直接修改状态。部分方法(如Animal的canAttack())未封装为私有方法,存在逻辑暴露风险。
继承
通过extends实现类的继承,如Elephant extends Animal,复用父类Animal的bite()、enterElectric()等方法,避免代码重复。子类重写父类方法(如Lion重写getAttackValue()),实现差异化逻辑。继承层次较浅,主要体现在继承(父类→子类),未涉及多层继承或复杂继承关系。因此还要加深对继承的学习和练习。
多态
通过方法重写实现运行时多态,如不同动物(Elephant、Lion)重写getAttackValue()方法,在调用时根据对象实际类型执行对应逻辑。接口IAttackable的实现类通过多态统一处理攻击值计算(如Animal实现getAttackValue())。我个人觉得多态的应用场景较为简单,主要集中在方法重写,但我去也未充分利用接口多态(如将接口作为参数类型)。有待改进的是在Electric类的showSoft()方法中,使用不同比较器(NameComparator、WeightComparator)时,未完全通过多态简化代码。
抽象类与接口(Abstract Class & Interface)
抽象类Animal定义抽象方法getAttackValue(),强制子类实现核心逻辑,同时提供默认方法(如bite())实现代码复用。接口IAttackable仅定义方法签名,由Animal及其子类实现,体现接口的行为契约。抽象类与接口的职责划分不够清晰(如Animal作为抽象类,同时承担了属性定义和行为抽象),可将行为抽象单独提取为接口。
集合框架
集合方法的使用较为简单,类似于数组方法,使用ArrayList存储动物和电器列表(如List
JavaFX
javafx的学习较为困难,就我个人而言,我对他的认识仅仅局限于表面,虽然老师通过反转课堂让我们自行学习,但网上资料有限,还需要我结合课本,对它进行进一步学习。Javafx是对界面设置的一种手段,我们可以用button等类对界面进行编写,而且JavaFX和后端逻辑整合也特别麻烦,数据更新和界面显示老是不同步,但是功能确实很强大,比起开学时候用到的EGE还是要好用很多。
总结:
初识 Java 时,我被其 “一次编写,到处运行” 的跨平台特性吸引,从基础语法到面向对象编程,逐步构建起对这门语言的认知体系。最深刻的体会是面向对象的三大特性 —— 封装让数据安全可控,继承实现代码复用,多态则赋予程序灵活的扩展能力,例如通过抽象类和接口定义契约,让不同子类在统一框架下实现差异化逻辑。
在实战中,Java 集合框架如同一座 “数据仓库”:ArrayList的随机访问、LinkedList的高效插入、HashMap的键值映射,以及ConcurrentHashMap的并发安全设计,让我学会根据业务场景选择合适的数据结构。异常处理机制则教会我以 “防御性编程” 思维处理错误。
JavaFX 和 Swing 的 GUI 开发让我接触到界面编程的魅力,从布局容器到事件监听,再到动画效果的实现,逐渐理解 “用户体验” 与 “代码逻辑” 的平衡之道。而深入 JVM 原理(如类加载机制、垃圾回收算法)后,更意识到 Java 不仅是编程语言,更是一套完整的生态体系。
学习过程中,我曾困于多线程编程的线程安全问题,也为设计模式的灵活应用挠头,但通过阅读源码(如 JUC 包的实现)和实战项目(如电梯控制系统、文件管理工具),逐渐领悟到 Java 的工程化思维 ——“简洁而不失严谨,规范而富有拓展性”。希望在不久的将来我能够熟练使用Java,对自己未来选择的行业有进一步认识。