前言

本次博客主要内容为此次三次作业的总结,整门java课程学习的总结,以及在此次java课程中的收获,和对课程的意见。

作业过程总结

第一次作业主要考察的是对程序的可扩展性,实现开闭原则非常重要,因为程序随着时间,需求会有所变化,避免需求变化时,代码的大量改动。

1、

可扩展性指的就是实现开闭原则,以后想要增加新的雨刷,可以实现尽量不修改代码下,只要增加代码,我的思路是新建一个接口有控制汽车刻度盘,抽象类负责挡位。新增雨刷只要接口就行。新增一个agent类就行了。

interfaceAgent2{public voiddealSpeed();

}abstract classdeal{public voidleverUp() {

}public voidleverDown() {

}public voiddialUp() {

}public voiddialDown() {

}

}

第二次作业主要考察的是map,set,list等的应用,运用hashmap可以同时记录数值和字符。

1、

需要将字符和出现次数同时存进hashmap,运用set存储key值,运用object数组储存set,array对array中的key进行排序得到。

Map hashMap = new HashMap(); //定义hashmap

Setset =hashMap.keySet();

Object[] array=set.toArray();

Arrays.sort(array);for(Object key:array){

System.out.println(hashMap.get(key) + "\t" +key );

}//遍历hashmap

第三次作业主要考察的是栈的应用,以及判断运算符优先级及算法的运用。

1、

主要考察的是对栈的运用,熟练使用peeek()和pop(),可以先把数字和运算符分开并一起保存在listl里面,然后一边将数字和运算符存进栈,一边判断即将存进栈的运算符和栈顶运算符的优先级,栈顶优先级大的,就提出数字栈的前两个进行运算,栈顶优先级小的,则不进行运算而是将即将进栈的运算符入栈。另外判断运算符优先级,当运算符比栈顶的运算符优先级小,则在数字栈开始运算。

//判断符号优先级

String s1 = operator.peek();if (s.equals("*")||s.equals("/")) {if (s1.equals("+") || s1.equals("-")) {return '>';

}if (s1.equals("*") || s1.equals("/")) {return '

}if (s1.equals("(")) {return '>';

}if (s1.equals(")")) {return '

}if (s1.equals("#")) {return '>';

}

}if (s.equals("+") || s.equals("-")) {if (s1.equals("+") || s1.equals("-") || s1.equals("*") || s1.equals("/")) {return '

}if (s1.equals(")")) {return '

}if (s1.equals("(")) {return '>';

}if (s1.equals("#")) {return '>';

}

}if (s.equals("(")) {return '>';

}if (s.equals("#")) {if (!s1.equals("#")) {return '

}else{return '=';

}

}if (s.equals(")")) {if (s1.equals("(")) {return '=';

}else{return '

}

}

三次作业之间的知识迭代关系:第一次作业考察的是代码的可扩展性,第二次第三次均考察到了数据结构,运用hashmap,set,栈来解决问题。在这三次作业中,我所花费的时间大约是1:3:1,在这三次作业中,我了解并熟悉了什么才是开闭原则,需求的改变使得一个程序必须要有可复用性,可扩展性,这样的程序才是令人满意的。map,list,set等数据结构可以更好地帮助我们处理数据并提高解决问题的效率。从中我也知道了,一个满意的程序要实现开闭原则,可扩展性越高,代码的寿命也就越长。

java课程学习的总结

在这几个月,通过网络课堂的学习以及在pta平台的作业下,我由原来的面向过程思想已经过渡为面向对象思想,熟悉了代码的测试,并且学到java fx 图形界面等知识。

(1)代码测试的重要性

一个程序需要考虑多种输入,多种情况,从此次java课程的学习中,我了解并熟悉了数据的异常处理,大数值的处理等。运用catch,try等处理异常数据,在输入的数据超过数据类型最大值时,例如输入的数据超过int型最大值。灵活使用算法解决,特殊情况需要特殊判定,例如除法中,分母为0的情况,闰年2月为2天,12月31日后一天等等。以及边缘测试,例如比如输入的范围是[0,1],可取0,1,-1,11作测试点。多次作业中都涉及到了数据的错误输入,如何判断以及输出wrong format,pta上的作业使我熟悉了如何对代码进行测试。

(2) 面向对象思想的理解

之前在学习c语言的时候是面向过程思想,在学习到java时,我了解到了面向对象思想,并发现面向对象思想与面向过程思想的不同以及它的优点。面向过程是单纯针对过程,一个一个步骤解决,通过各个函数实现,面向对象是把一个问题分为几个类。类中有自己的属性和方法,一个类做自己的事。面向对象思想可以帮助我们提高代码的可扩展性,实现高聚合,低耦合的特性。而且遇到中间要比较大的改动时,面向过程往往需要大量修改代码,而面向对象只需要根据模块选择需要改的部分修改即可。

(3) 关于面向对象三大技术特性的理解

关于这三大技术特性:封装性,继承性,多态性。封装性就是把一些东西封装成类,并用protected,private设置访问权限,一个一个的类体现了面向对象的思想。继承性使得每个类都有一些共性,子类可以有父类的方法,使得代码量有所减少。多态性是建立在继承性上的,多个类继承至同一父类,子类有着不同的动作,多态大多用于接口,使接口得以重用。

java课程的收获

(1) 关于从pta作业中学到的新知识

新知识就是面向对象的思想,三大技术特性的应用,并且了解到了一些算法,令我印象最深的应该是正则表达式了,几乎每一次作业都有,不得不说正则表达式可以快速解决一些字符串处理问题,以及判断输入的格式正确与否,用到最多的应该是pattern和matcher了。各种数据结构的用法,比如hashmap,栈。

(2) 在pta上得到的教训

第一个就是格式了,哪怕是一个空格也会报错,代码要精简,代码长且没有意义是没有用的,例如。 做题目一定要把题目分析完再做,比如题目给的输入输出规则,看解题报告,不然等于白做或者做到中间做不下去。

(3) 从java fx中学到的新知识

从开始的按钮设计到pane,几种box的学习,再到设计一个计算器界面,再到按钮事件,键盘事件,鼠标事件,将代码和图形界面对接,这无疑是我在此次java课程中的又一大收获,图形界面赋予代码新的灵魂。

关于对课程的建议

建议以后的pta题量像最后几次作业一样,题量可以减少。。

对java这门课程的认识_关于java课程的总结相关推荐

  1. java课程 数独 文库_数独java

    数独游戏的算法研究与实现_IT/计算机_专业资料.数独游戏的算法研究与实现 java lSSN1009-3044 ComputerKnowledgeAnd MnoJ;01∥电奠知识与技术 E-mail ...

  2. java质数和合数的程序_《java项目实训》课程设计计算器.doc

    <java项目实训>课程设计计算器.doc 课程设计报告课程名称JAVA项目实训课程设计设计名称基于JAVA计算器的设计与实现学生学号学生姓名学生学号学生姓名学生学号学生姓名学生学号学生姓 ...

  3. 万年历-java课程设计题_万年历-Java课程设计题(eclipse编辑器)

    [ Eclipse中tomcat部署工程启动后报错: 严重: Error configuring application listener of class org.springframework.w ...

  4. java语言中类定义数组赋值_在Java语言中,下列对于字符数组的定义并赋值正确的是(选一项)_学小易找答案...

    [单选题]<茶花女--饮酒歌>这段音乐属于级进还是跳进的旋律? <茶花女-饮酒歌>.mp4 [简答题] [单选题]对外汉语教学中以系统讲授语言知识的一类课型,包括语音.词汇.语 ...

  5. java制作一个简单的画板_【Java】Thymeleaf一个简单示例

    Thymeleaf简单介绍 Thymeleaf是用来开发Web和独立环境项目的服务器端的Java模版引擎 Spring官方支持的服务的渲染模板中,并不包含jsp.而是Thymeleaf和Freemar ...

  6. java 必须try catch的异常_【java基础之异常】死了都要try,不淋漓尽致地catch我不痛快!...

    @ 1.异常 1.1 异常概念 异常 :简单说就是不正常运行,最终导致JVM的非正常停止. 在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象.Java处 ...

  7. java基础入门课后习题答案_《Java基础入门》课后习题及答案

    <Java基础入门>课后习题及答案Java基础入门,课后习题,答案 博学谷--让IT教学更简单,让IT学习更有效 第6章JavaAPI 一.填空题 1.在Java中定义了两个类来封装对字符 ...

  8. java带参数的方法笔记_具有Java参数的方法的类声明

    类声明可以包含在Java中具有参数的方法.演示此过程的程序如下: 示例class Message { public void messagePrint(String msg) { System.out ...

  9. java中随机数怎么定义类_浅析Java中的随机数类

    Java中的随机数是否可以重复?Java中产生的随机数能否可以用来产生数据库主键?带着这个问题,我们做了一系列测试. 1.测试一: 使用不带参数的Random()构造函数 * @author Carl ...

  10. java web开源项目源码_适合Java新手的开源项目集合——在 GitHub 学编程

    作者:HelloGitHub-老荀 当今互联网份额最大的编程语言是哪一个?是 Java!这两年一直有听说 Java 要不行了.在走下坡路了.没错,Java 的确在走下坡路,未来的事情的确不好说,但是瘦 ...

最新文章

  1. maven打包时加入依赖包及加入本地依赖包
  2. 警告!你的隐私正在被上亿网友围观偷看!
  3. UVA 11038 How Many O's?
  4. 计算机网络【四】数据链路层基本概念+点到点通信(PPP协议)
  5. 图片配置文件设置 索尼a7s2_倒计时开课两天~索尼微单相机专题课程
  6. 解决ajax中ie缓存问题(手动添加时间戳)
  7. Xpath轴与步长应用:取某节点下所有子孙节点里的文本内容
  8. 设计模式:JavaScript
  9. 软件测试中的43个功能测试点总结
  10. 不背单词vs墨墨背单词 竞品分析
  11. Pigsty:开箱即用的数据库发行版
  12. 查找大于某个数的最小数
  13. web打印问题:lodop 一直提示 未安装
  14. 打造个人云数据生活解决方案示例
  15. 【DIP/数字图像处理】第二次习题(DCT、DFT、DWT、DHT频谱分布;证明DFT平移性质;ILF与BLF的区别)
  16. 重装系统(win7)
  17. 彻底搞懂a++和++a的区别
  18. Linux请求调页技术,linux零页技术.doc
  19. seu校园网简易自动登陆教程
  20. pms酒店管理系统功能,酒店管理系统软件开发

热门文章

  1. 从质疑到成为必选项,低代码技术发展及 2022 展望
  2. 我们研究了1.5万场活动,换个大城市生活可能对你有用
  3. var let const 区别
  4. 账户配置阻止使用计算机.怎样开机,开机自启动设置怎么操作 开机自启动设置如何禁止【图文介绍】...
  5. python sanic orm_基于sanic的微服务框架 - 架构分析
  6. 网站图片全自动加密_11 个值得收藏的在线工具和资源网站
  7. python pycharm打包_【转】通过PyCharm 把Python 程序打包为exe
  8. html伸缩布局,CSS3 伸缩布局(一)
  9. mysql 查看表格scott_mysql查询学习第一天,针对scott
  10. php 动态 控件,PHP技术在动态网页表单控件提取中的应用研究