JAVA结课_Java结课感想

一、相遇

在接触Java课程之前,可能是因为看到过以往学长学姐们写Java程序时焦头烂额的样子,也可能是在此前学习C语言程序设计的时候,有听说过Java的“威名”,就感觉这门课不是这么的好学,同时也担心自己会学不好,导致这门课最后的成绩不好。而且在正式上课前还有个小插曲,就是那个java编程的平台eclipse以及jdk的配置就已经弄得我有点束手无策了,调了很久才调好。

二、初相识

在上第一节课的时候,老师就有说过,java是一门面向对象的语言,和面向过程的c语言不一样。当时的我由于对java语言还是比较懵懂的,再加上在试着编写java程序的时候,感觉上和c语言很像,或者说这时候的我还没从c语言的编程思想中跳脱出来。于是乎在第一个阶段的学习中,在编程的时候还是仍然沿用着以前的编程思想来进行编写。而与此同时,却也接受到了一些新的概念:类、成员、对象、方法、属性什么的。在当时的我看来,我将方法相似为c语言中的函数,把类类似地看作一个c语言中的结构体来理解,当然现在看来这是不对的。同时也知道了main方法,是不属于类中的,它可以在同一个程序的多个类之中,只需要在使用的时候调用即可。同时,对于java中一些类型的计算是不能够直接去运算的不然会使得精度不太准确,好比如double、是不能够直接通过相减后的得数与一个确定的小数来比较的,当然后面在通过使用BigDecimal来处理double类型float类型的精度计算问题。

在后续几节课中,接触到了String与StringBuilder类型,虽然都是处理字符串的,但是两者还是有着一定的差别的,同时是需要相互转换的,并不是相同的类型。对于字符串之间的比较,不能够单纯的用“==”来判断,就比如一个是String a=“abc”,一个是String b=new String(“abc”),这个时候如果用“if(a==b)”来判断a与b是否相等的话,得到的结果会是false而不是true,这是因为虽然两者都是字符串abc,但字符串b却指向了一个新的对象,即是有两个对象,且都是字符串abc,但是却有两个不同的指向,因此这个语句判断就不再是判断字符串的内容,而是判断对象是否相等,因此结果是false。而若要进行字符串内容的比较,则需要用到equals来。

在此阶段,第一次感受到了“对象”一词,有了初步的认知。同时对于一些基本类型也有个新的认知。

三、相知

经过第一个阶段后,迎来了第二个阶段,同时也接触到了一个新的东西,成为UML图。这是一种类图,将程序的类的架构以及它们之间的联系、内部的成员属性方法和它们的隐私性、数据类型都给标明了出来,给程序设计提供了一个参考。

在新的阶段中,借助UML图,更能够快速的了解到题目的需求,与此同时,也接触到了“抽象类、继承”、面向对象设计的三大特性“封装性、多态性、继承性”以及一些基本原则“单一职责原则、开-闭原则”等面向对象设计语言的特别之处以及思想上的编程原则。

借助抽象类,可以使得一些具有共性的类省略了一些内容不用重复填写,同时通过继承可以共同使用这些共性,也可以根据自身不同的需求来对其内部进行重写,以此达到程序的灵活性以及整体的美观,使不会因为某些共性而反复编写。

通过封装性将类的方法,属性都给打包起来,拥有自己的职责,可移植,便于后续修改;继承性是将多个类给归纳出他们间的共性,随后创造一个父类,可以是抽象的也可以不是,随后根据需求,子类继承父类的共性,同时对自身不同于父类的方法进行重写抑或是重载,主要是为了可以实现代码的复用;而多态性,则是继承性的再拓展,在存在继承关系的基础上,创建引用子类的父类类型的对象,可以达到既能使用父类的共性,又能进行子类的应用的功能。

对于两个原则而言,单一职责原则使得每个类都只执行一个职责,令程序的可读性增强;开-闭原则针对拓展开放,对修改关闭,就像之前所讲的抽象类,通常是一些类的共性,开闭原则也可以这么来理解,就是需要将共性摒除,利用继承性、多态性与抽象类来应对新增的情况,而不是在原来的基础上进行修改,这样针对不同的类型时都能够实现,而不是只在某个时刻针对某种特定的类型。

同时在第二阶段中,接触到一种新的方法——正则表达式。这种方法多应用于判断输入的数据是否符合某种特定的类型从而进行筛选、分类、处理。而由于正则表达式的多样,使得我在一开始上手的时候感到十分的艰难,不知道怎样写才是一个正则表达式,但在后续的学习中,通过自我查阅资料以及课上的讲解同学的帮助,逐渐上手。对于正则表达式,多数时候是以String字符串来进行操作的,因此在此期间还认识到了String类型的一些常用方法,比如trim()用于去除字符串首尾的空格;split()用于以某种正则表达式进行字符串的分割,从而更好地进行数据的处理。

还有了解到一种常用的接口,就是用于排序的。常见于Comparator接口中的comparaTo方法,在很多时候需要自己进行重写,从而实现先比较后排序。

四、相离

在最后一个阶段的学习中,学习任务相对而言轻松了一点点,可能是因为经过前面的洗礼,已经逐渐地适应了这个节奏吧。在最后,接触了部分数据结构,学习了如何从编程平台跳出到文件、实现界面的系列简单操作,也渐渐地开始在没有UML类图的参考下,自行去设计类,去设计类与类之间的联系,真正地放开去进行面向对象的设计,虽然过程有点艰难,但仍然能够凭借前面的累积而磕磕碰碰的完成。

总而言之,在这一段时间,感受到的java和在开始的时候所想象的来说没有那么的可怕,但难度还是摆在那儿的,经过一个学期的java面向对象设计的学习,由衷的感受到了编程的难度,难不仅限于自身知识层面的浅薄,还在于测试用例的设置。说起这个测试用例的设置,给我的感觉就是,一个完整的程序,编写过程只占了其中的大概三分之一左右,而设置测试用例则是占据了剩下的三分之二,这足以说明用例的重要性,然而这也是难以去逾越的一道坎,需要此后的长时间的积累。除此之外,如果有兴趣作为动力去驱动的话,学起来也是事半功倍的。

感谢这段时间的相遇、相识与相知,令最后在相离时留下一段充满意义的经历。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值