java先导课程学习总结

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

  这门课让我学到的:

  

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

  首先是构造函数,构造函数可以有多种不同的构造函数,这里涉及到老师上课说过的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活动来对内存进行回收等。尽管这样做使得程序的安全性得到了提高,但是这样也拖慢了程序的运行速度。当然,不管什么语言,数据结构和算法的优劣都会很大程度上影响程序的运行速度。

  作业中所遇到的困难

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

  对本课程的建议:

  这次先导课是我第一次接触java,但是上下来之后。我感觉吴老师和助教帮助我们打开了java的大门。也给我们指明了一条顺利度过oo课程的道路。课程整体上给我的感觉是挺好的,强调编程实践,课上老师带着大家编程,课下老师和助教总会在群里帮助大家解决问题。总结上次课的错误等,都可以从中学到很多东西。我想提的一个建议是,每次作业是否可以给我们展示一份完成比较好的优秀作业代码。这样我们可以通过阅读其他写的好的代码了解java的编程习惯和规范等。如果害怕大家直接阅读代码而不自己课下去修改自己程序中原来存在的BUG的话,大可以在课程结束的时候,将所有作业优秀的代码给大家一份,让我们可以有借鉴学习的地方。

时间: 2024-10-09 14:44:19

java先导课程学习总结的相关文章

2018面向对象程序设计(java)课程学习进度条

<2018面向对象程序设计(java)课程学习进度条> 周次 (阅读/编写)代码行数 发布博客量/博客评论量 课堂/课余学习时间(小时) 最满意的编程任务 第一周 40/20 1/0 4/5 九九乘法表 第二周 100/40 1/1 4/5 实验3 第三周 300/ 1/0 4/7 第四周 第五周 第六周 第七周 第八周 第九周 第十周 第十一周 第十二周 第十三周 第十四周 第十五周 第十六周 第十七周 累计 原文地址:https://www.cnblogs.com/tangyuechen/

2019面向对象程序设计(java)课程学习进度条

2019面向对象程序设计(java)课程学习进度条 周次 (阅读/编写)代码行数 发布博客量/评论他人博客数量 课余学习时间(小时) 学习收获最大的程序阅读或编程任务 1 20/10 1/0 5 九九乘法表 2 200/40 2/4 8 第三章实验三,实验四: 第三章案例LotteryOdds.java                                                                                                  

扎西平措 201571030332 《面向对象程序设计(java)课程学习进度条》

<面向对象程序设计(java)课程学习进度条> 周次 (阅读/编写)代码行数 发布博客量/评论他人博客数量 课余学习时间(小时) 学习收获最大的程序阅读或编程任务 第一周 20/6 1/0 4 JDK.eclipse的安装.九九乘法表的编译 第二周 200/50 2/0 7 数据类型的总结,第三章实验四.实验五.实验六 …… …… …… …… 第17周 累计 420/40 2/0 14 ... ... 原文地址:https://www.cnblogs.com/zhaxipingcuo/p/11

java入门经验分享——记面向对象先导课程学习感想

选择在暑期学习面向对象先导课程的初衷是为大二下学期面向对象课程做一些铺垫,接触入门java语言.在接触java的过程中,就编程语言的学习方法而言,我从刚入学时的手慌脚乱四处寻求帮助到现在慢慢养成了自己不断寻找困难解决方法的习惯,感觉自己的另一种自学能力--一种计算机工科的实践能力得到了培养,这种自学能力跟学习基础课程理论知识的感觉完全不同,这种需要在实践和动手中得到经验和知识的自学方法与以前理解现成抽象理论概念的自学方法可以说是完全不同了.作为一个偏好理论研究的理科女生,动手实践能力在此之前几乎

《2018面向对象程序设计(java)课程学习进度条》

  周次 (阅读/编写)代码行数 发布博客量/评论他人博客数量 课余学习时间(小时) 学习收获最大的程序阅读或编程任务 第一周                20/10                         1/0              5 利用Elipse开发程序输出九九乘法表 第二周                60/20                         1/0              6                  实验七     实验五 第三周  

《2019面向对象程序设计(Java)课程学习进度条》

周次 (阅读/编写)代码行数 发布博客量/评论他人博客数量 课余学习时间(小时) 学习收获最大的程序 阅读或编译让我 第一周 20/5 1/0 3 编译九九乘法表 第二周 100/10 2/0 4 第3章实验题四 第三周         第四周         第五周         第六周         第钱周         第八周         第九周         第十周         第十一周         第十二周         第十三周         第十四周    

201871020225-牟星源 《面向对象程序设计(java)》课程学习进度条

<2019面向对象程序设计(java)课程学习进度条> 周次 (阅读/编写)代码行数 发布博客量/评论他人博客数量 课余学习时间(小时) 学习收获最大的程序 阅读或编译让我 第一周 25/15 1/0 5 编译九九乘法表 第二周 100/40 3/0 6 1.导入程序, 2.理解了String类对象和StringBuilder类对象的用法与区别. 3.通过第二次实验我对JAVA的一些简单程序有了初步的理解. 4.学习了基础编程方法并加以利用. 第三周 第四周 第五周 第六周 第钱周 第八周 第

201871010114-李岩松《面向对象程序设计(java)》课程学习总结

面向对象程序设计课程的学习的提升 在本学期Java学习当中,从面向过程跳转到面向对象的编程思想的过程中还是很艰辛,在不断的尝试过程,和发现的过程才能够得以提升,是助教牛百泉学长也一直在帮助我们,周末开直播,用简单的例子去理解java基础中的知识,同时自己对于课本上晦涩的知识也有了进一步的理解,并且通过自己的努力和练习完成程序的编写,结对编程中不断的讨论,面对问题不断地层层剖析,逐步找到解决的方法和思路,最终通过每个知识点的积累写出符合实验要求的程序,真的很有成就感.下面就本学期学习情况做出总结:

徐思201771010132 《面向对象程序设计(java)》课程学习总结

1.实验目的与要求 (1) 综合掌握java基本程序结构: (2) 综合掌握java面向对象程序设计特点: (3) 综合掌握java GUI 程序设计结构: (4) 综合掌握java多线程编程模型: (5) 综合编程练习. 2.实验内容和步骤 任务1:填写课程课后调查问卷,网址:https://www.wjx.cn/jq/33108969.aspx. 任务2:综合编程练习 练习1:设计一个用户信息采集程序,要求如下: (1)  用户信息输入界面如下图所示: (1)用户点击提交按钮时,用户输入信息