java先导课程学习总结

  通过两个星期四节课的java学习,我也对java这门语言有了必定的认识。刚开始上课的时候,我认为java把C语言中老师所说的模块化编程进行了强调,进行一个类,一个类的编程,在类中构造相应的方法,使用的时候再调用。这样可以减小重复的代码,同时能让代码总体看上去比较整洁。这样写起程序来,调试比较容易,eclipse的自动纠错功能用起来也很是好用,感受写成一个java的程序在有C语言的基础上仍是比较容易完成的。后来慢慢地,老师向咱们介绍了面向对象的各种思想以及这些思想在java语言中的使用。后来可以明显感受到,随着面向对象的各种思想引入以及java语言特色的介绍后,写起程序来难度愈来愈大了。这是我对面向对象先导课的总体印象。java

  这门课让我学到的:python

  

  总结一下我的在此次先导课程中所学到的。关于第一节课中的整体内容在第一篇博客中整体已经有所总结,这里对后来所了解到的内容进行补充。算法

  首先是构造函数,构造函数能够有多种不一样的构造函数,这里涉及到老师上课说过的java类中方法名能够相同,但只要参数个数或者参数类型,返回值类型等不一样就会被断定成不一样的方法。因此常常会存在方法名相同可是参数类型不一样的状况,好比说String类型中的indexOf方法,能够是一个参数,也能够是两个参数,均可以实现各自的目标。因此构造方法也能够有多个,构造方法的方法名与类名相同。若是没有定义构造方法的状况下,对象中各属性均初始化为默认值,如integer类型的值初始化为0等。编程

  java的输入输出也颇有特色,刚开始学习C语言的时候,也是先学输出,以后再教输入。可是C语言的输入输出种类并非不少,java的输入输出种类划分很细,基本可以知足你在C语言中所要实现的输入输出功能。java的输出代码较为简洁,基本几行就能够解决。但输入代码感受写起来比较繁琐。以后了解到,java的输入输出是基于流的输入输出,这样可以使得程序的输入输出独立于设备,并不关心数据源来自哪里。java的数据流分为字符流和字节流,咱们课上所用的通常都是字符流,经过BufferedReader进行相应的输入。数组

  Java的接口是面向对象的一个重要思想,利用java的接口,咱们能够在接口里面定义相应的抽象方法,java接口是java面向对象语言的一个重要机制。利用该机制,咱们可使得代码更加简洁。这些是老师上课所告诉咱们的。但上完课后,对于接口的意义还不是很可以理解。这里再对接口的相关内容进行补充。首先由于接口定义的是抽象方法,相应的具体方法在类中还要进行重构,感受是否有接口的影响应该不大。后来经过上网查阅资料了解到相关内容。理解为何不直接在类中定义相应方法涉及到抽象类的相关内容。在java程序里面多写一个接口或者是抽象类,是为了多态可以实现,若是不用抽象类或者接口进行多态的实现,那么程序中可能就要重载许多个意义相同的方法,而且每增长一个类,就须要重载相应的方法。代码简介度和维护性太低。利用接口或者抽象类来编写程序的话,就可以编写出实现了多态的程序,大大下降了代码的重复性,使得代码看上去较为简洁。同时可以使得后面若是要进行增长类等操做变得更加方便简单。虽然抽象类的实现与接口的实现很是类似,但抽象类与java接口是java的两种不一样机制。抽象类是利用java的继承来进行的,可是java的类不能够多继承,因此这个时候,接口就能够派上用场了。利用接口,java程序能够从别的地方实现实现相应的方法。安全

  其次是java字符串的处理,java字符串处理是将字符串抽象为类进行管理。经过相应的方法对字符串进行操做,大大简化了程序中字符串处理相关的代码,从中就能够感受出java中以类进行编程的方法的优点。Java中字符串的处理有不少相应的方法,在我以前所写的博客中有所记录,做业中咱们常常用到split方法来进行对字符串的分割。C语言中字符串处理主要是靠对数组进行相应的操做,每次都要进行代码的重写而且还容易出错。而java将字符串抽象为类以后,每次根据要处理的内容主要对方法进行改动便可。仅仅只是对方法进行调用,而不用去管方法背后是如何实现这些操做的。并不像C语言同样,每次都要从头开始写,大大简化了程序对字符串的操做。数据结构

  java的运行速度以前是在大一的时候,在学python时所提到过,C语言的运行速度能够说是高级语言里面运行速度最快的语言,而java的速度稍微慢一点,可是也比python快。在进行了先导课的学习以后,了解到了java的运行速度慢的一些缘由,java隐藏了指针,因此程序不可以直接对内存分配等进行管理。java就要自动进行频繁的GC活动来对内存进行回收等。尽管这样作使得程序的安全性获得了提升,可是这样也拖慢了程序的运行速度。固然,无论什么语言,数据结构和算法的优劣都会很大程度上影响程序的运行速度。eclipse

  做业中所遇到的困难数据结构和算法

  而这几回愈来愈有挑战的做业中遇到的困难,在以前的博客有所说起,这里进行相应的补充。第一次做业根据助教给的说明文档,在写最后一个方法的时候,并无认识到java中将对象也能够做为返回值使用,因此最后没有可以按照助教所给的说明文档写出相应的方法。java中将各类数据抽象为对象,在java中对对象能够进行不少相应的操做,好比能够将对象做为参数进行传递,将对象做为返回值或者建立对象的数组等相应的操做。第二次做业中,由于以前没怎么接触过输入输出,因此在输入输出方面遇到了比较多的困惑,后来查阅到文件的经过文件进行输入能够采用BufferedReader来进行,而经过控制台进行输入的话,能够采用Scanner这个类来进行输入。Scanner这个类能够直接将控制台的内容读入后进行处理。同时第二次做业写的过程当中还充满了对接口的疑惑。后来逐渐了解到,那个做业自己并非必定须要接口,只是结合第一次做业若是能够用接口实现的话,就能够实现了上文中对接口能够从别的地方实现相应的方法这一个功能,可以对接口有所熟悉。第三次做业并无其他面向对象思想的介绍,可是在课上自测的时候,遇到了很是严重的BUG。在每一行的字符串处理的时候,都是直接就用了indexOf,并无进行其余处理,致使若是查找of单词,出现的位置是第一个字符of的位置,而字符of是包含在其余单词中的。后来课下进行debug后明白,应该每次查找位置后,调整每次indexOf起点的位置,是的每一个单词查找到以后,就从查找范围内去掉。从此次课上自测能够看出,其实本身不少时候很难发现BUG,即便有时候可能比较明显。因此,每次的课下自测过程其实很重要。最后做业的过程当中,HashMap根据网上的教程,使用起来还算好,可是咱们的程序怎么组织HashMap一开始比较不知所措。刚开始想定义一个新类,类中有第一个单词和第二个单词两个属性,而后HashMap的Value里面存储该词组出现的次数,后来发现这样进行操做的话,单词的查找等会有挺多有问题的地方,通过了几回尝试以后,采用了最后做业的方法。算是可以看起来输出好像是对的答案了。模块化

  对本课程的建议:

  此次先导课是我第一次接触java,可是上下来以后。我感受吴老师和助教帮助咱们打开了java的大门。也给咱们指明了一条顺利度过oo课程的道路。课程总体上给个人感受是挺好的,强调编程实践,课上老师带着你们编程,课下老师和助教总会在群里帮助你们解决问题。总结上次课的错误等,均可以从中学到不少东西。我想提的一个建议是,每次做业是否能够给咱们展现一份完成比较好的优秀做业代码。这样咱们能够经过阅读其余写的好的代码了解java的编程习惯和规范等。若是惧怕你们直接阅读代码而不本身课下去修改本身程序中原来存在的BUG的话,大能够在课程结束的时候,将全部做业优秀的代码给你们一份,让咱们能够有借鉴学习的地方。

相关文章
相关标签/搜索