Java课程的总结与概述
一,前言
Java是一门运用极为广泛的计算机编程语言,本课程的前两次的针对不同的问题的博客,第一次博客主要探讨有关电梯运行的程序代码,电梯运行程序的代码一共迭代了三次,三次的迭代我学习到了如ArrayList的运用,enum枚举等方法,让我对java程序的迭代有了更深的了解,懂得深入理解题目的意义,与现实相接,切实的解决与生活相关的问题;第二次博客主要探讨有关航空货运管理系统的程序代码,航空货运管理系统代码一共迭代了两次,两次的迭代我学到了许多知识,例如抽象类,接口的使用,还有代码程序的开闭原则,代码程序的继承和多态。PTA作业针对性强,知识点涵盖广,提升了我们自主学习代码编程的能力,但是每次作业的衔接有点生硬,大部分的只知识需要自己去寻找。课堂上并没有进行及时的补充。实验的难度较大,许多陌生的知识点,需要长时间的去了解理解。线上课程和线下课程安排的很合理。总之,本次博客主要是介绍我在这半年的Java课程中的学习中的收获与问题,以及自己在学习中遇到的问题,希望能更好的认识这门课程。
二,面向对象技术总结
在多次的PTA作业中,我学习到了类的封装,例如PTA题目集5,最后一道题,正是电梯代码的第一次。第一次上手着实困难,并没有完成本次题目集的任务。但是在第二次的航空货运管理系统代码的迭代中我成功的完成了。
(1)通过这次航空货运管理系统的代码迭代,我学会了java程序的封装、继承、多态、抽象类、接口。
封装:通过将属性设为私有(private)并提供公共的访问方法(getter/setter)来实现。
继承:就是子类继承父类,可以直接继承父类的方法,也可以重写。
多态:通过父类引用指向子类对象并调用重写的方法。
抽象类:抽象父类中的抽象方法,子类必须实现该方法,并且抽象父类不可被new出来。
接口:我认为接口的使用极大的体现了java程序的优势,将一个动作或者状态定义为接口,这样的代码符合开闭原则,代码的可读性,可修改性得到了极大的提升。
(2)对于java程序集合框架、异常处理的理解与认识。
<1>集合框架
ArrayList:动态数组,随机访问快,增删慢。
LinkedList:双向链表,增删快,随机访问慢。
ArrayList的使用极为广泛,使用起来也极为方便。LinkedList为双向链表,增删快,但是时间复杂度较高。ArrayList 适合随机访问频繁、增删操作较少的场景(如遍历、按索引查找)。
LinkedList 适合头部 / 尾部增删频繁、随机访问较少的场景(如队列、栈)。
实际生活中,大多数场景优先使用 ArrayList,因为随机访问需求更常见。
<2>异常处理
-
异常体系结构
Java 的异常体系以 Throwable 为根类,主要分为两大分支:
Error(系统错误)
表示系统级的严重故障,如内存溢出(OutOfMemoryError)、栈溢出(StackOverflowError)等。这类错误由 JVM 直接抛出,程序无法捕获或恢复,通常需要管理员干预。
Exception(可处理异常)
表示程序运行中可预见的问题,可通过异常处理机制捕获并处理。其中:
受检异常(Checked Exception):继承自 Exception,编译器强制要求必须显式处理(如 IOException、SQLException)。
非受检异常(Unchecked Exception):继承自 RuntimeException,编译器不强制处理(如 NullPointerException、ArrayIndexOutOfBoundsException)。 -
异常处理关键字
Java 提供了五个关键字来实现异常处理:
try用于包裹可能抛出异常的代码块,它必须配合 catch 或 finally 使用。
catch捕获并处理特定类型的异常,可定义多个 catch 块处理不同异常。
finally无论是否发生异常,finally 块中的代码总会被执行,常用于资源释放。
throw手动抛出一个异常实例,通常用于自定义异常场景。
throws声明方法可能抛出的异常,由调用者负责处理。 -
最佳实践
具体捕获原则:优先捕获具体异常,避免捕获通用的 Exception,防止隐藏潜在问题。
资源管理:使用 try-with-resources 语句自动关闭实现 AutoCloseable 接口的资源。
异常链:在抛出新异常时保留原始异常信息,便于定位问题.
避免空 catch 块:空的 catch 块会静默吞掉异常,导致调试困难。 -
集合框架的结合
在集合操作中,常见的异常包括:
IndexOutOfBoundsException:访问列表越界(如 list.get(10) 但列表只有 5 个元素)。
NullPointerException:操作 null 集合或元素。
ConcurrentModificationException:并发修改集合(如遍历中删除元素)。
<3>JavaFx
JavaFx是java的一个应用程序,jdk版本在11版本以上的需要引入依赖。我认为,javafx就是使用Java的程序进行界面的构造。就如当时我们在C语言的课程中使用的ege图形界面大同小异,但如果是jdk1.8的,自动包含javafx的包,不需要再引入依赖的javafx包。
javafx有多种包
基本架构
Stage:窗口容器。
Scene:场景图的根节点,包含所有可视元素。
Node:所有 UI 组件的基类,分为 Parent(容器)和 Control(控件)。
按钮类Button, ToggleButton触发操作。
文本类TextField, TextArea输入 / 显示文本。
选择类ComboBox, ListView, TableView下拉框、列表、表格。
布局容器VBox, HBox, GridPane管理组件排列。
对话框Alert, FileChooser显示消息、选择文件。
图表LineChart, BarChart数据可视化。
三,采坑心得
Java的程序代码非常的灵活,就像一千个读者心中有一千个哈姆雷特一样,即使是一个简单的多文件程序,许多人的构造类的方法都不一样,java即为类。在开始着手Java程序的时候,首先了解一些基本的结构,随后便使用了去年面向过程的思维方式去解决问题,用面向过程的思维方式去应对PTA题目集,对于前几次的题目集还好,因为都是上学期我们C语言课程的一些基本的题目,但是到了第5次题目集,电梯代码的开始,彻底让我认识到面向过程思维的缺陷,应对一些问题的局限性,这迫切需要我转变我的思维方式,使用面向对象的思维去看待这个问题,其实在我们线下课程的主要重点也是培养我们面向对象的思维方式转变的不够即使,以至于我在第一次的大作业中栽了大跟头。面向对象和面向过程的思维方式截然相反,面向过程,一个main串下来,程序和问题复杂时,面向过程的main函数就会变得十分的冗长,但好处是,面向过程的代码安全性更高。面向对象,讲究的时类,各个类分工明确,各司其职,讲究代码的时效性灵活性可读性,面向对象的主类代码的长度不会太长,极大的提高了代码的可读性,相反如果代码不进行一定的封装保护,代码缺少一些安全性。我们这门课程的精髓就是面向对象的思维方式,所以说我们在学习新知识的时候,解决新问题的时候,一定要学透吃透,不能说我用以前的知识解决了就不认真对待这个新知识,也许认真琢磨一下面向对象的思维方式就能体会到在解决一些问题是,采取适应的思维方式才会事半功倍。总之希望看到这条博客的人还有我自己能懂得变通,不要太死板,不要有一种解决办法就直接完工了,我们可以再去看看是否还有哪些可以提升的比如再添加一个专门输入专门输出的类,这样代码的结构会不会更合理,我们要勇于探索,敢于改变,才能在学习之路行稳致远。
四,改进建议及总结
在本学期的java课程的学习中,我收获了一门新的计算机编程语言,这门语言采用面向对象的思维方式来解决问题,在生活实际中运用的极为广泛。在我们的线下课程中,蔡轲老师讲课通俗易懂,幽默风趣。同时在每一次的大作业中PTA及时跟进,就是希望老师可以根据课程的进度来布置大作业题目,有许多次的大作业都是我们课程还没有讲到的,陌生的知识偏多,可以稍微减少一些课程未讲到的知识。对于我们Java课程的实验,实验的难度适中,但是在使用实验提交系统时有一定的问题,希望老师可以加强实验提交系统的优化,建议老师打开复制粘贴,没有一些简化编写代码的操作,这样会让学生浪费不必要的时间,学生可以利用这些节省出来的时间进行一些大作业中陌生知识的学习。线上的课程类别有序,学习起来很方便。对于Java课程的实验,JavaFx的使用必不可少,JavaFx的知识很多很复杂,我们采用的是学生组队互相讲解每一个不同的JavaFx的模块,但每个小组就只有很少的时间进行讲解,真要吃透这些知识点需要学生课下再去深深地琢磨一下,希望我们老师可以在线上的课程开展一个JavaFx的模块学习,这样课上听同学们的讲解,即使有不懂的也可以去线上的JavaFx课程模块去观看去学习,这样我们在进行实验,进行一些网页的制作就会更加熟悉,不会太过生疏。总之,Java的课程已经接近尾声,这学期既有收获也有遗憾,希望在今后的学习中能更进一步!
浙公网安备 33010602011771号