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

前言

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

作业过程总结

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

1、

82901612d4692496afb4fb909dc39e39.png

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

interfaceAgent2{public voiddealSpeed();

}abstract classdeal{public voidleverUp() {

}public voidleverDown() {

}public voiddialUp() {

}public voiddialDown() {

}

}

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

1、

e88beab099bad6bbeabbc151303cee56.png

需要将字符和出现次数同时存进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、

58ff9e0feb852cb9054320853dcf7a24.png

主要考察的是对栈的运用,熟练使用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时,我了解到了面向对象思想,并发现面向对象思想与面向过程思想的不同以及它的优点。面向过程是单纯针对过程,一个一个步骤解决,通过各个函数实现,面向对象是把一个问题分为几个类。类中有自己的属性和方法,一个类做自己的事。面向对象思想可以帮助我们提高代码的可扩展性,实现高聚合,低耦合的特性。而且遇到中间要比较大的改动时,面向过程往往需要大量修改代码,而面向对象只需要根据模块选择需要改的部分修改即可。

e2a6356b8e043cbf08e5f2c2188bdd81.png

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

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

java课程的收获

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

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

(2) 在pta上得到的教训

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

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

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

关于对课程的建议

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528236.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux php和java环境变量配置_Linux下配置Java环境变量

一般来说,我们都会把Java安装到 /usr/local 目录 或者 /opt 目录下。这里假设java安装包已解压在了 /opt下,具体目录为:/opt/java8/java1.8.0_45目录(注意:如果是生产环境中,一定要root用户来安装配置)。下面我们来配置…

java多线程多态_Java学习之多线程

多线程:(一)进程与线程进程特点并发与并行的区别:多线程编程的好处:(二)多线程的建立1,通过继承Thread类,代码如下:class MyThread extendsThread {private static int K 10;//类共享变量private int M10;…

php seaslog安装,浅谈win10下安装php seaslog扩展的方法

本篇文章给大家分享一下win10 php安装seaslog扩展的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。【推荐学习:《PHP视频教程》】一、检查系统环境情况使用phpinfo()检查系统环境情况,找到需要下载的配置…

php里push的用法,php array_push函数怎么用?

php array_push函数用于向数组尾部插入一个或多个元素,其语法是array_push(array,value1,value2...),参数array必需,指规定一个数组;value1必需,指规定要添加的值。php array_push函数怎么用?定义和用法arr…

java if (name!=null name!=),java中的NullPointerException异常

java中的NullPointerException异常关注:176 答案:3 mip版解决时间 2021-01-27 20:59提问者侢遇噹姩揂2021-01-27 02:10Login.jsp提供登录表单。到LoginCheck.jsp发生空指针异常错误。LoginCheck.jsp:String userName request.getParameter("userName");String pas…

caany边缘检测matlab,自适应canny算法研究及其在图像边缘检测中的应用.pdf

自适应canny算法研究及其在图像边缘检测中的应用.pdf还剩51页未读,继续阅读下载文档到电脑,马上远离加班熬夜!亲,很抱歉,此页已超出免费预览范围啦!如果喜欢就下载吧,价低环保!内容要…

flask mysql orm,flask的orm框架(Flask-SQLAlchemy)-创建表

标签:# 转载请留言联系ORM 是什么?ORM,Object-Relation Mapping。意思就是对象-关系映射。ORM 主要实现模型对象到关系数据库数据的映射。优点 :只需要面向对象编程, 不需要面向数据库编写代码.对数据库的操作都转化成对类属性和方法的操作.不…

php+使用go编译,golang如何编译

Go语言中使用 go build 命令主要用于编译代码。在包的编译过程中,若有必要,会同时编译与之相关联的包。go build 有很多种编译方法,如无参数编译、文件列表编译、指定包编译等,使用这些方法都可以输出可执行文件。go build 无参数…

oracle19c监听服务启动失败,Oracle19c安装(有失败成功记录)

Oracle19c安装(有失败成功记录)失败过程失败安装设置 (图为安装成功后获取)成功过程安装设置配置监听桌面类与服务器类的区别总结说明:失败过程失败问题一模一样,无论安装成功或者失败都出现“无法添加用户XXXX到%2%组中”的弹窗,都是点6下继…

linux ospf 命令,OSPF单区域配置 - linuxprobe2020的个人空间 - OSCHINA - 中文开源技术交流社区...

为了弥补距离矢量路由协议的不足,IEFI组织开发了一种基于链路状态的内部网关协议OSPF实验环境:红,绿,蓝三个颜色区域代表三个不同网络的办公场所,要求使用OSPF协议实现网络互通。pc1:172.16.1.1pc2:172.16.2.1pc3:172.…

ubuntu下的linux怎样备份文件,Ubuntu系统如何备份还原?Ubuntu系统备份还原教程

Ubuntu系统如何备份还原?Ubuntu系统是一个以桌面应用为主的开源操作系统,专为开发团队而打造!无论你使用的是什么操作系统,都有可能出现电脑无法修复的故障,这时候备份还原功能就显得非常重要了。今天小编要给大家分享…

jenkins linux编译c,【Linux】【Jenkins】代码编译和执行过程中的问题汇总

1.问题1:java.io.FileNotFoundException: /root/.jenkins/workspace/Videoyi_AutoTest_Maven/config-log4j\log4j.xml (No such file or directory)该问题是由于代码是在windows下编写和编译的,使用的都是\\来实现目录结构的,结果到linux下的…

linux清理整个磁盘空间,一次Linux磁盘空间清理的经历

最近,在Linux上运行BPM应用总是报没有空间的错误。经过一番调查和周折,终于找出了问题的症结,并顺利解决。今天,我把过程总结一下,方便自己或其他有类似问题的朋友参考。这里不对具体命令的具体各种参数做深入介绍&…

c语言手游常用代码,c语言源代码【操作流程】

很多小伙伴都遇到过c语言源代码的困惑吧,一些朋友看过网上零散的c语言源代码的处理方法,并没有完完全全明白c语言源代码是如何解决的,今天小编准备了简单的解决办法,只需要按照1:编写C源代码for_learning_compile.c2&a…

pdxp协议 C语言,集成CC控制逻辑,PD协议及MCU的Type-C应用方案

Type-C系列亮点介绍内包MCU、集成CC逻辑和DP协议支持Typec DP Alt mode 和单独的DP输入支持速率最高可达4-lane 5.4Gbps(HBR2)支持macbook2016版本,拔掉adapter不掉电● DP1.2/Type C转HDMI1.4,支持HDCP1.3,可扩展PD,USB3.0接口● 支持1/2/4 lane DP输…

Android打开谷歌应用,谷歌确认 Android 12 新增剪贴板访问提醒,将在 Beta 2 上线

IT之家 5 月 19 日消息 据外媒 xda-developers 报道,近年来,谷歌一直在打击 Android 系统中的剪贴板访问,并在发布 Android 10 时禁止后台应用读取剪贴板数据。在最新的 Android 12 中,谷歌引入了一项设置,每当应用访问…

Android nfc编译,【Android编译】各个模块编译方法

一、如何编译出vendor.img1. 首先找到产品对应BoardConfig.mk路径:LINUX/android/device/项目/产品/BoardConfig.mk2. 修改BoardConfig.mk设置下面代码中的ENABLE_VENDOR_IMAGE为true。#Enable split vendor imageENABLE_VENDOR_IMAGE : true#ENABLE_VENDOR_IMAGE :…

android7.0 蓝牙定位,BluetoothAdapter在Android6.0/7.0+以上startDiscovery不能发现蓝牙设备问题...

BluetoothAdapter在Android6.0以上startDiscovery不能发现蓝牙设备问题问题的重要原因之一是Android 6.0,Android 7.0的权限问题引起的。在Android 4.0上运行良好的蓝牙代码,在高版本运行异常。比如BluetoothAdapter的startDiscovery虽然启动了发现蓝牙任…

19年的华为手机还能搭载鸿蒙吗,2019年华为手机出货或超2.15亿部 鸿蒙系统最快10月首秀...

科客点评:备用方案可以说是越多越好,这样的确能有效避免突发事件所带来的巨大风险。6月13日,知名分析师郭明錤给出了有关华为的最新预测报告,该预测报告主要对华为手机今年的出货量进行了预测。根据分析师郭明錤的报告显示&#x…

html5如何新建定义站点,HTML5技术教程:创建新作品_HTML5教程_创建作品_添加元素_课课家...

我们所熟知的HTM5软件是一款非常强大功能的软件,据我了解HTM5软件的特色也是非常有优势的。我们先来介绍一下它的优势:HTML5可以提供:①:提高可用性和改进用户的友好体验;②:有几个新的标签,这将有主(助?)开发人员定义…