期末课程总结
目录
通过这个学期的学习,我学习了一个新的语言Java语言,一个面向对象编程的语言,完全不同于第一个学期学习的C语言,一下是我对这门语言的总结与学习心得
内容
1、对象
将所有的方法和变量定义为对象,第一次上Java课老师就点明了Java一切皆为对象,而且Java就是面向对象编程的,可以说Java的一切都是围绕对象而来的,可以看出对象在Java的重要性,这是最为关键,也是最为基础的。
2、封装:
通过访问修饰符控制类成员的可见性,实现数据隐藏。
对于我而言,封装就是将C语言里面的方法单独分成一个文件,使得方法更加独立,能够不被其他因素影响,同时,能够让我更好的看到有哪些方法,那些方法有什么用,以及怎么调用这些方法,真正使用起来与C语言一对比确实能看出来封装对于编程的好处。
3、继承:
使用extends关键字实现类的继承,支持单继承。
继承可谓对面向对象的一个天才设定,有了继承让我在使用类时能完美的进行分类,让我在编程的时候保持头脑清楚,而且还为后面的多态打下了基础,可以说继承是Java最重要的一个内容。有了继承关系,一切有关联的对象都能被联系起来,由此也诞生了Java库里面成百上千的库方法,要是没有这个,那么编程的难度,以及编程的开发工具的发展都无法进行,有了继承,一切都有了可能,继承就是Java世界的一道光,照耀着每一个编程的孩子。
3、多态:
通过方法重写和接口实现多态性,允许不同类的对象对同一消息作出不同响应。
多态其实就是继承的一个具体应用,多态的运用能够让修改更加简单也就是所谓的对修改关闭,对拓展开放,多态能使一个复杂的程序修改成简单的逻辑,将多个子类同引用与一个父类,这样,只要使用一个父类就能管理或者使用子类的所有内容了,而且后续需要添加新的功能也很方便,只需要让新的类extends父类就能添加功能了,比C语言修改内部代码来的快和简单的多
4、接口与抽象类:
接口是全抽象的,支持多实现;抽象类是部分抽象的,只能单继承。
接口其实也就是继承的拓展,它能够使得一个类继承多个接口,但是接口只能使用抽象类来表示,而且里面的方法也只能是抽象方法,但是他能使Java编程能适应更多的情况,因为现实世界里面一个事物可能不止属于一类,他能被多个类别所接纳,所以Java也提供了多接口的设定,使得类的分类变得更加准确,进一步的使得编程系统变得越来越完善。
5、异常处理
异常分类:包括受检查异常和运行时异常。
异常处理结构:使用try-catch-finally捕获和处理异常。
Java 的异常处理机制是保障程序健壮性的关键,其核心思想是将错误处理代码与正常业务逻辑分离。理解异常处理的本质是错误传播路径的设计—— 通过合理的异常类型定义、传播层级控制和恢复策略选择,构建出既健壮又易维护的系统。异常与性能
异常抛出和捕获涉及栈回溯,频繁使用会影响性能(但在正常业务场景中可忽略不计)。
异常与设计原则
单一职责:异常处理代码应与业务逻辑分离
开闭原则:通过自定义异常实现扩展而不修改现有代码。
踩坑心得
学习 Java 的过程中,我掉进过不少 “坑”,这些经历虽然充满挫折,但也让我对这门语言有了更深刻的理解。
在基础语法方面,大小写敏感问题让我吃尽苦头。曾因将System.out.println()写成system.out.println(),导致程序报错却难以排查,浪费了大量时间。此外,变量作用域也容易出错,在嵌套循环中错误地重复声明同名变量,引发逻辑混乱。后来意识到,规范的代码编写习惯和细致的检查,是避免这类问题的关键。
面向对象编程的学习过程中,继承与多态的特性也暗藏 “陷阱”。在重写父类方法时,忽略了方法签名的严格匹配,或者错误地理解@Override注解的作用,导致程序运行时出现奇怪的行为。还有一次,在使用封装特性时,没有正确设置访问修饰符,意外暴露了类的内部细节,破坏了数据的安全性,经过这次教训,我才真正重视起访问控制的重要性。
集合框架和多线程编程更是 “重灾区”。在使用HashMap时,没有考虑到哈希冲突的情况,导致数据存储和读取出现异常;在多线程环境下,因忽视线程安全问题,使用非线程安全的ArrayList,结果程序在并发访问时频繁报错。为了解决这些问题,我深入学习了集合的底层原理和多线程同步机制,通过加锁、使用线程安全的集合类等方式,逐步攻克难题。
异常处理同样不容忽视。编写代码时,使用宽泛的catch (Exception e)捕获所有异常,结果掩盖了真正的错误原因,让调试变得异常困难。另外,在try-with-resources语句中,没有正确处理资源关闭时抛出的异常,导致异常信息丢失,这些错误让我明白,合理、精准地处理异常,才是保障程序健壮性的关键。
除了语言特性,在工具和环境配置方面也踩过坑。因 JDK 版本不兼容,导致程序在编译或运行时出现莫名其妙的错误;使用 IDE 时,错误的项目配置和依赖管理,也会引发各种难以预料的问题。每一次踩坑都是一次成长,这些经历让我明白,学习 Java 需要严谨的态度、深入的思考,以及不断探索和解决问题的决心。
学习心得
初涉 Java,便被其严谨的语法规则与面向对象的编程思想所震撼。从基础语法的学习,到深入理解类、对象、继承、多态等核心概念,每一步都伴随着思考与突破。
在学习基本语法时,Java 严格的大小写敏感特性和规范的命名规则,时刻提醒我编程需要细致与专注。变量声明、数据类型、流程控制语句的学习,为后续的编程实践打下了坚实基础。当接触到面向对象编程时,才真正领略到 Java 的魅力。封装实现了数据的隐藏与保护,继承让代码的复用变得高效,多态则赋予程序强大的扩展性和灵活性,这些特性共同构建起一个庞大而有序的编程世界。
学习过程并非一帆风顺,集合框架与多线程编程曾让我困惑不已。集合中List、Set、Map不同接口及其实现类的特点与适用场景,需要通过大量练习才能熟练掌握;多线程编程中线程的创建、同步、生命周期管理,涉及到复杂的逻辑和资源竞争问题,唯有反复调试代码、研读优秀示例,才能逐渐理清思路。
异常处理机制的学习,让我明白程序的健壮性至关重要。合理地捕获、抛出异常,不仅能提高程序的稳定性,还能让错误处理逻辑与业务逻辑分离,使代码结构更加清晰。而 Java 丰富的类库和工具,如文件操作、网络编程相关的类,极大地拓宽了编程的边界,让我能够实现更多复杂的功能。
通过不断学习与实践,我深刻体会到,学习 Java 不仅是掌握一门编程语言,更是培养一种编程思维和解决问题的能力。每一次攻克难题,每一个功能的成功实现,都让我充满成就感,也激励着我继续探索 Java 更广阔的领域。未来,我将带着这份学习的热情,深入钻研 Java 的高级特性,不断提升自己的编程水平,在 Java 的世界里创造更多可能。
实验心得
在 Java 的学习过程中,实验环节至关重要,而 PTA 平台则是我们完成实验作业的主要难点。其中两次大作业的经历,至今仍让我记忆犹新,每一次完成作业,都像是完成了一场艰难的挑战,也从中收获了许多宝贵的经验。
第一次大作业是设计电梯系统,这个任务对当时的我来说难度极大。光是楼层之间的逻辑转换,就花费了我大量的时间和精力。那段时间,我经常熬夜写代码,每当夜深人静,宿舍里其他同学都已进入梦乡,我还坐在电脑前,眼睛紧紧盯着屏幕,手指不断地在键盘上修改代码。我始终想不明白,为什么电梯到达指定楼层后没有及时关门?为什么运行顺序是先前往高层,再回到低层?而且每次运行程序,都会出现一连串的错误提示,这让我感到十分苦恼,仿佛陷入了一团乱麻之中,怎么也理不清头绪。但我没有轻易放弃,越是失败,就越想弄清楚问题所在。我反复翻阅教材,在网上搜索各种教程,还积极向老师和同学请教。经过无数次的尝试和修改,我终于弄明白了电梯运行的逻辑。当看到程序能够按照预期正常运行,电梯也能根据我编写的代码工作时,之前熬夜带来的疲惫瞬间消失,取而代之的是满满的成就感。
有了第一次的经验,我本以为第二次大作业会轻松一些,然而现实却给了我一个 “下马威”。这次作业对输入输出格式的要求极其严格,哪怕多一个空格、错一个标点符号,作业都无法通过。我在编写代码时必须格外谨慎,每完成一行代码,都要仔细检查格式是否正确。我反复运行程序,认真核对每一处细节,可每次提交后,依然无法通过。那段时间,面对电脑屏幕上的失败提示,我常常感到束手无策,既着急又无奈。但我清楚,如果此时放弃,之前的努力就都白费了,所以只能继续坚持,不断修改代码。经过多个日夜的努力,修改了无数次之后,作业终于成功通过。那一刻,我悬着的心终于放下,内心的成就感难以言表。但是通过这些大作业的训练,我的水平真的有所提升,到一开始不知道private的使用到现在能独立完成一些需要使用继承,多态等的难题。
浙公网安备 33010602011771号