第三次博客作业

前言

本学期的面向对象课程即将结束,回顾整个学习历程,既有攻克难题的喜悦,也有陷入困境的迷茫。这门课程通过多样化的学习形式,如 PTA 作业,Blog 作业,迭代实验,线上学堂在线以及线下课程,不断加强我对Java知识的理解。

PTA迭代作业

每周的PTA都有三到五题不等,除了最后一题,前面几题都是对我在那段时间学习成果的测试,最后一题的迭代作业。犹记得PTA第一次迭代大作业是电梯实验。那次迭代大作业是我做得最差的大作业,它有一个最难处理的问题是内部指令和外部指令处理的先后顺序,我当时就倒在这一难题,苦思冥想都无法解决。在那次大作业结束后,我深刻的明白了我基础的薄弱和思维的混乱,导致无法在输入内部指令和外部指令时顺利处理。后面在第二次迭代大作业时,我总结了上次大作业的失败,我在这次的迭代大作业非常顺利,虽然说第二次迭代大作业难度比上一次大作业更简单,但是我依然收获颇丰,成功掌握了抽象类的使用和父类子类的继承关系。总体而言,PTA作业侧重于对编程知识的实践应用,对特定的知识点进行专项训练。从基础的语法应用到复杂的算法实现,不断地锻炼了我的编程能力并且提高了我的算法思维。

Blog作业

Blog作业是我们在每一次迭代大作业结束后的总结反思,在每次的Blog作业中,我通过SourceMonitor对我的代码进行分析,了解我的代码缺陷和不足。通过Blog作业,我成功的对我们学习内容进行了梳理,通过文字不断加深知识的理解和记忆,从而为后面的编程打下坚实的基础,从而避免反复出现相同的错误,因此我认为Blog作业是对我编程思维和编程能力的提升最大。

实验

实验也是迭代式作业,最后一次实验是运用javafx实现第二次PTA大作业航空货运系统。实验的总体难度是最高的,也是让我最煎熬的作业。因为实验要求在学校制作的软件编程,在那个软件中我们无法进行复制粘贴,而且还没有编译错误提醒。所以,在编译过程中,我必须小心再小心,避免编译出错。但是总体而言,,每次编译都会出不少的错误,前几次实验还好,一两百行的代码还是很容易找到错误地方,也不会眼花缭乱,但是到后面四五百行的代码让我眼花缭乱,让我修改十分难受。但在这么多次的实验中,我对键盘的熟悉度和码字速度可谓是今非昔比,虽然确实难受,但利大于弊,总体而言我认为学校制作的软件还可以,最好加一个代码行数标记和调试功能,这样更容易找到错误的代码行。

学堂在线和线下课程学习

学堂在线里的课程都是Java基础的讲解,虽然Java的基础知识和c语言有很多相同的地方,但是还是很有收获的,我通过学堂在线的学习,我明白了什么是关键词,什么是接口,而且学堂在线的学习还和起码成绩挂钩,不过可惜的是,学堂在线的作业正确率不高,导致学堂在线的总分也不高。线下学习时,老师教导我们如何培养算法思维以及教导我们如何解决更种编程问题。所以我认为学校这样安排非常合理。

面向对象编程知识总结

基础语法
数据类型
基本类型:包含int、double、boolean等共 8 种,各自有对应的包装类,像Integer、Double。
引用类型:涵盖类、接口、数组等。
变量与修饰符
变量存在局部变量、实例变量和类变量这三种类型。
修饰符可分为访问控制修饰符(如public、private)和非访问控制修饰符(如static、final)。
流程控制
条件语句有if-else、switch。
循环语句包括for、while、do-while。
跳转语句有break、continue、return。
面向对象编程
类与对象
对象是类的实例,类则是对象的抽象模板。
构造方法用于对象的初始化。
继承
通过extends关键字实现,一个子类只能继承一个父类。
可以对父类的方法进行重写,需遵循@Override注解规范。
多态
表现为方法的重载(Overload)和重写(Override)。
能够通过父类引用指向子类对象。
封装
借助访问控制符(private、protected等)来隐藏数据。
利用getter/setter方法来访问和修改数据。
抽象类与接口
抽象类使用abstract修饰,无法实例化。
接口在 Java 8 之后可以包含默认方法和静态方法。
异常处理
异常分类
受检查异常(如IOException)必须进行显式处理。
运行时异常(如NullPointerException)可不作处理。
异常处理机制
采用try-catch-finally语句捕获异常。
使用throws声明异常,throw抛出异常。
集合框架
Collection 接口
List:具有有序、可重复的特点,实现类有ArrayList、LinkedList。
Set:具备无序、唯一的特性,实现类有HashSet、TreeSet。
Map 接口
存储键值对,实现类有HashMap、TreeMap。
常用操作
迭代方式有Iterator、for-each循环。
Java 8 引入了 Stream API,可用于集合的处理。
多线程编程
线程创建方式
继承Thread类。
实现Runnable接口。
实现Callable接口(支持返回值)。
线程同步
使用synchronized关键字。
利用ReentrantLock类。
线程协作
借助wait()、notify()、notifyAll()方法。
使用Condition接口。
高级工具类
线程池可通过ExecutorService创建。
有CountDownLatch、CyclicBarrier等同步工具。
输入 / 输出
流的分类
按方向可分为输入流和输出流。
按数据类型可分为字节流(如FileInputStream)和字符流(如FileReader)。
常用类
缓冲流有BufferedInputStream、BufferedWriter。
对象流有ObjectInputStream、ObjectOutputStream(支持序列化)。
反射机制
能够在运行时获取类的信息并操作类的成员。
常用于框架开发,例如 Spring。
注解与泛型
注解
内置注解有@Override、@Deprecated。
可以自定义注解,使用@interface定义。
泛型
使代码具有类型安全性,例如List
通配符有? extends T、? super T。

踩坑心得

就最近的踩坑来说,在用javafx设计航天航空货运系统时,我总是无法解决添加订单保存问题,订单保存按钮事件处理问题:在showAddOrderDialog方法中,当用户点击 "保存" 按钮时,虽然代码检查了必填字段,但没有正确处理数据持久化的逻辑。货物列表验证问题:代码检查了cargoList.isEmpty(),但在 JavaFX 中,从表格视图获取的列表可能在初始化时不为空但没有实际数据。订单状态未更新:新创建的订单状态没有正确设置,可能导致后续处理异常。后面我在showAddOrderDialog方法的保存按钮事件处理中,添加了更严格的验证逻辑,以及在创建新订单时,显式设置订单状态为OrderStatus.CREATED,终于解决了无法添加订单的难题。这一切都源于之前扎实的积累和合理运用ai才成功完成了javafx航空货运系统的设计。之前的踩坑基本就是逻辑混乱不清楚导致执行顺序有所不同,进而无法获得想要的结果,或者是编译基础不过关,导致总会出现一些小错误。

Java学习的总结心得

在学习 Java 的这段时间里,我收获颇丰,对这门编程语言有了较为系统的认识和掌握,也在编程思维和实践能力上得到了显著提升。
一、基础知识的积累
最初接触 Java 时,我从基础语法开始学习,包括数据类型、变量、运算符、流程控制语句等。这部分内容是 Java 编程的基石,虽然看似简单,但只有扎实掌握,才能为后续的学习打下良好的基础。例如,在学习数据类型时,我了解了 Java 中基本数据类型和引用数据类型的区别,以及它们在内存中的存储方式。通过大量的练习,我能够熟练运用各种流程控制语句来实现不同的逻辑功能。
面向对象编程的理解
面向对象编程是 Java 的核心思想之一,也是我学习过程中觉得最有挑战性但又最有价值的部分。在学习面向对象编程时,我深入理解了封装、继承、多态这三大特性。封装使得代码具有更好的安全性和可维护性,通过将数据和方法封装在类中,对外提供特定的接口来访问和操作数据。继承则允许我们创建一个新的类,继承现有类的属性和方法,从而实现代码的复用。多态的应用让程序具有更强的灵活性和可扩展性,同一个方法在不同的对象中可以有不同的表现形式。通过实际项目的练习,我逐渐掌握了如何设计和实现面向对象的程序,能够将现实世界中的问题抽象为类和对象,并通过它们之间的交互来解决问题。
常用类库的掌握
Java 提供了丰富的类库,这些类库大大提高了开发效率。在学习过程中,我重点学习了 Java 核心类库,如 Java.lang、Java.util、Java.io、Java.net等。例如,在 Java.util 包中,集合框架是非常重要的一部分,我学习了 ArrayList、LinkedList、HashMap、HashSet 等常用集合类的特点和使用方法,能够根据不同的需求选择合适的集合来存储和操作数据。Java.io 包中的 IO 流操作让我学会了如何进行文件的读写操作,实现数据的持久化存储。Java.net包则帮助我了解了网络编程的基本原理,能够编写简单的网络应用程序。
编程能力的提升
通过不断的学习和实践,我的编程能力得到了很大的提升。在刚开始学习时,我往往需要参考大量的示例代码才能完成简单的任务,而且代码的质量和效率也不高。但是随着学习的深入,我逐渐培养了自己的编程思维,能够独立分析问题并设计解决方案。在编写代码的过程中,我更加注重代码的可读性、可维护性和效率,学会了使用一些设计模式来优化代码结构。同时,通过调试和解决程序中的 bug,我也提高了自己的问题解决能力。
学习过程中的不足
尽管在学习 Java 的过程中取得了一定的进步,但我也清楚地认识到自己存在一些不足之处。首先,在基础知识的掌握上还不够扎实,有些概念和知识点只是一知半解,没有深入理解其本质。其次,在面向对象编程的设计能力上还有待提高,有时候不能很好地将现实问题抽象为合适的类和对象,导致代码结构不够合理。另外,对于一些高级特性和框架的学习还不够深入,如多线程编程、JavaEE 框架等,这限制了我开发复杂应用程序的能力。
未来的学习计划
针对自己的不足之处,我制定了未来的学习计划。首先,我会重新复习 Java 的基础知识,深入理解每个概念和知识点,通过阅读相关的书籍和文档来拓宽自己的知识面。其次,我会加强面向对象编程的实践,尝试设计和开发一些小型的项目,提高自己的设计能力。同时,我会学习多线程编程、JavaEE 框架等高级内容,了解分布式系统、微服务架构等前沿技术,提升自己的开发水平。此外,我还会积极参与开源项目,与其他开发者交流和学习,不断积累经验。
总之,学习 Java 是一个不断探索和进步的过程。通过这段时间的学习,我不仅掌握了一门重要的编程语言,还培养了良好的编程思维和学习能力。在未来的学习和工作中,我会继续努力,不断提升自己的技术水平,为软件开发事业贡献自己的力量。

posted @ 2025-06-22 18:28  萧辰1  阅读(9)  评论(0)    收藏  举报