Java学习总结

0.前言

  本次博客主要是针对java这门课程的感想。

1.pta作业过程总结
  ①综合这么多次pta作业,从最开始还是以面向过程的思想去写第一次作业,

Java学习总结_第1张图片

当时还是主要以了解java的一些基本知识为主,这个还是难不倒我们,然后到第二次作业就开始有一些方法,

Java学习总结_第2张图片

方法的知识也不是很难,难的是里面的算法,就一直花时间去想,就用来很多if去解决。然后到了第三次作业,第三次作业就是第二次作业的一个延申,

Java学习总结_第3张图片

这次作业就是难度的开始,开始去接触类,类的设计,setget方法算是我比较印象深刻的,开始是真的不懂setget方法是干嘛用的,只知道一有private属性,setget就行了,然后这方面的代码写的多了,也就理解的更深了些,setget对于private是非常重要的,开始做pta的题目时,简单的类倒还好一点,到了后面的日期类的设计,就只有一个日期类,而后到后面的题目就开始不同之间类的设计,开始对类的设计感到非常奇妙,特别有意思,但做到时候还是很有困难,开始就是非常直,一直if,if到代码长度过长,一到pta上运行就显示代码长度过长,然后就距pta结束还有两天,就想着去百度一下,什么用递归while去解决,一看根本看不懂,就偶然看到一篇是用一个while去解决,它是一天一天的去加,我立刻就懂了解决这个问题的方向了,就写了一个一天一天加的算法来解决,但运行超时了,而后就有一个月一个月的加,就找对了这个算法的方向,就很快完成了。

到了第四次作业,是正则表达式的一些运用,类的继承

Java学习总结_第4张图片

第五次作业,就是对第四次作业更深一层的理解,继承与多态,类的更复杂的设计,算法等

Java学习总结_第5张图片

第六次作业,第五次作业的更深运用,继承与多态,接口的运用,算法的优化

Java学习总结_第6张图片

第七次作业,类的一些设计原则,单一职责,利用多态去实现系统的扩展性

第八次作业,则是接口、数据结构LIst、Map等的一些运用,也是考验我们java知识的掌握

第九次作业,是正则表达式的一些运用,Stack的理解,算法的理解

这个作业不算特别难,但这里面的算法确实很有意思,以及新知识Stack的运用,Stack确实有些地方是非常好用的。

  ②Java的三大基本特性。封装性,使类的成员属性变得私有化,将类的一些敏感的信息隐藏在类的内部,不让外界直接去访问,但可以通过setget方法去访问,使得这些成员属性更加有效,同时也会使代码更加安全,全面。继承性,子类通过一种方式来继承父类所有的开放的成员属性和成员方法,子类可以定义自己的属性,同时也能在继承父类方法的基础之上去重写方法,变成自己的成员方法,既增强了代码的复用性,又使得代码的质量进一步提升。多态性,一种类型在不同条件上体现不同的效果,方法可以重写,可以覆盖重载,一方面体现了代码的复用性,另一方面又使得代码更加灵活,使得整个程序的代码质量的提升。
  ③在pta作业过程中,很多的问题并不是知识的缺乏,编译错误也比较少,大部分都是逻辑错误,经常碰到指针为空,正则表达式不对等一些错误,就是因为一方面是算法不够健全,另一方面也是自己的校验数据没写好,让一些本该报错的数据进入到了算法当中,程序中每一步都是紧密相连的,任何一步都非常重要。而有的时候debug又不是很好用,对于这些逻辑错误,我就是用数据去试,在可能出错的地方输出,很多都是通过这样解决了。
  ④每次作业基本都能提前完成。也有几次时间结束了还未做到100分,也是有一些可惜。
  ⑤编程过程中的严谨性与教训。首先,编程需要严谨这是肯定的,一个程序本身也是由很多部分组成,输入输出,校验数据,处理数据,核心算法等。每一部分都不能有错,任何一个部分有错都会导致测试点过不去,就拿最近的一次大作业来说,题目要求我们表达式求值,

Java学习总结_第7张图片

表达式的一些不允许出现的情况,一开始先写了一个算法,然后开始校验数据,我就输入了一个数据,得到了正确答案,然后就开始写校验数据,写完了后再拿那个数据去试验,发现居然报错了,我开始以为是我的Main,或者我的算法不够全面,就在那里较劲,后来就在这个算法中加入了一个输出,在发现校验数据出了点小问题。代码的每一部分都应该严谨,一步一步来,不是每个错误都是算法出错了,也不是每个错误都是程序的校验数据出错了,或许这样那样的错误才使得编程更有魅力吧。
2.OO设计心得
  ①oo的三大技术特性,封装,继承,多态。这三者本身就是关系非常紧密的,一层接着一层,封装可以为继承提供作用,继承也为多态提供作用。封装使得代码复用性更高,而在封装的基础上又有了继承,又使得代码的复用性更加好,多态更是如此,在继承上,又使得代码的复用性更高,其代码质量更加好,简单却又功能健全。
  ②oo的基本原则理解,单一职责原则,开闭原则。单一职责,一个类仅拥有一个作用,像计算类,那么他的作用就是计算就行了,没必要在计算类又加上了测验,又加上了输出,完全多此一举。而计算类里也有许多方法,比如说将数据分隔开,那么分割开的这个方法,他就只承担分割数据这一个职责。开闭原则,针对一个类或一个程序,他对扩展是开放的,对修改时关闭的,一个程序你可以对他进行更多功能的扩展,但不能让你去修改里面的内容,这对程序的安全性有了更好的保障。
  ③OO编程思维的理解,我觉得就是要将里面的东西分析好,万物都可为对象,将每一个问题当作这世间的万物去分析,不能一个问题就一种方法,从头写到尾,这样写起来,不仅费时费力,一旦出错了,找错的时间真的远远大于写的时间。将每一个事物进行分解,让类来代表事物,方法代表功能,类与类之间的关系代表这些事物的关系,使得每一个问题就分解的很清晰,很好理解,代码也将更加稳定,更加适用。
  ④类设计心得,我觉得主要是要针对问题能否分析清楚,问题能够分析清楚那么类的设计自然也可以设计的很好,使得写出来的代码可读性很强,又具有一定的艺术性。每一个类的关系分析清楚,一个类应该拥有什么方法,哪些方法是不需要使用的,让每一个类变得简单却又功能完整。就关键点是找到这些事物间的联系,然后联想到类的设计。
3.测试的理解与实践
  测试肯定非常重要的,他可以检测出这个代码的质量如何,一个质量好的代码造就出一个好的程序,自然而然地也会使得客户的满意度更高。而测试也应该更加严厉,什么时候会让程序输出Wrong Format,而不是程序出错,直接闪退,用户的体验感会非常差的,你可以输出Wrong Format,但你一看到程序闪退就会很不爽,所以我觉得测试点一方面要偏,但又要精确。应该要能够测出代码是否会直接报错。
4.课程收获
  这一个学期的学习Java以来可以说是感触非常深刻,更是对编程有了很大的兴趣,觉得他非常有意思,好像发现了一个新的天地,编程也有他的艺术之美,然后就是他是根据对象来进行设计,跟前面的c语言截然不同,学习c语言的时候是没有这么多的方法,很多都需要自己去写,像排序,c语言好像没有这种方法,而Java有很多,可以用List、HashMap、Collecions来进行排序,又能对对象里的数据去进行排序,存入两个数据,确实是即简单又美妙,而c语言的数据更多都需要使用链表,很麻烦。同时Java也算是给了我对编程有了一个新的理解,一种新的思想,使得我对未来的学习更加有了兴趣。
5.对课程的建议
①作业难度还是中等偏上的,题量我觉得还是一到两道题比较适合。
②我觉得老师还是讲得很好的,就是觉得还可以多通过代码去理解知识会更好一些。

你可能感兴趣的:(Java学习总结)