20172325 2018-2019-1 《Java程序设计》第二周学习总结

教材学习内容总结

3.1集合

  • 集合是一种聚集、组织了其他对象的对象。集合可以分为两大类:线性集合和非线性集合。
  • 线性集合:一种其元素按照直线方式组织的集合。
  • 非线性集合:一种其元素按某种非直线方式组织的集合。
  • 集合中元素的彼此之间的组织形式通常由元素添加到集合的次序和元素自身的一些内在关系决定。
  • 抽象数据类型(ADT):是一种在程序设计语言中尚未定义其值和操作的数据结构类型。ADT的抽象性体现在,ADT必须对实现细节进行定义,且这些对用户是不可见的。
  • Java集合API(应用程序编程接口):一个类集,表示了一些特定类型的集合,这些类的实现方式各不相同。

3.2栈集合

  • 栈(STACK)是一种线性集合,其元素的添加和删除都是在同一端进行的。其遵循后进先出(LIFO)原则,可颠倒顺序。
  • 栈的基本操作
  • 操作:描述
    push:添加一个元素到栈的顶部
    pop:从栈的顶部移出一个元素
    peek:查看栈顶部的元素
    isempty:确定栈是否为空
    size:确定栈的元素数目

3.3主要的面向对象概念

  • 利用多态引用和继承,可以创建可以储存任意类型的对象的集合。
  • 多态引用是一个引用变量,他可以在不同地点引用不同类型的对象。术语“多态性”可定义为“具有多种形式”。通过多态引用调用的某个方法,在每次调用的时候都可以发生变化。
  • 继承可用于创建一个类层次,一个引用变量可用于指向与之相关的任意对象。继承就是从已有类派生出一个新类的过程。新类自动地含有初始类的部分和全部变量和方法。
  • 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

3.4使用栈计算后缀表达式

  • 由栈提供的操作与后缀表达式计算过程有着很好的一致性。使用栈来计算后缀表达式的算法描述如下:从左到右扫描表达式,依次识别出每个符号(操作符或操作数)。如果是操作数,就将其压入(push)栈中。若是操作符,则从栈中弹出(pop)两个操作数,并把先弹出数放在符号右侧,后弹出数放在符号左侧进行计算,然后把计算结果压入(push)到栈中,循环往复,当进行到表达式的末尾时,栈中所剩余的元素便是该表达式的结果。
  • javadoc注释(为Java添加注释的官方标准):以/**开始、以 */结束。Javadoc可用于创建关于类集的在线的HTML文档,在线的JavaAPI文档就是例子。

3.6栈ADT

  • Java接口定义了一个抽象方法集,有助于把抽象数据类型的概念与其实现分开。
    public interface stackADT <T>

3.7用数组实现栈

  • 数组中的单元数量称为容量,该值储存在数组的length常量中,数组一旦创建好,其容量是不能改变的。

3.8ArrayStack类

  • 泛型(包括泛型数组)不能被实例化。所以我们必须创建一个存储Object引用的数组,然后把他转换成泛型数组。
  • 在将Object数组转换成泛型数组时一定会出现未检验类型转换警告,所以加上@SuppressWarnings(“unchecked”)即可。
  • push、pop、peek、isempty、size等方法的具体使用。

4.1链接作为引用

  • 对象引用变量可以用来创建链式结构,链式结构是一种数据结构
  • 对象引用变量存放的是对象的地址,表示对象在内存中的存储位置
  • 在链表中存储的对象通常泛称为该链表的结点,注:需要一个单独的引用变量来表示链表的首结点,链表终止于其next引用为空的结点

4.2管理链表

  • 对于管理链表时,进行删除和插入的方式的顺序是很重要的,如果不当,会将出现某段结点消失的情况
    改变引用顺序是维护链表的关键

4.3无链接的元素

  • 存储在集合中的对象不应该含有基本数据结构的任何实现细节

4.4JavaAPI中的栈

  • java.util.Stack类是从Vector派生而来的,它带给了栈一些不恰当的操作。

4.5使用栈来穿越迷宫

  • 这一节是迷宫的类型。说明的是:可以用栈来模拟递归处理,以跟踪恰当的数据

教材学习中的问题和解决过程

  • 问题1:在做选择排序和冒泡排序的时候对于冒泡排序法完全没了印象
  • 问题1解决方案:
    冒泡排序:
    原理:比较两个相邻的元素,将值大的元素交换至右端。
    思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。
    第一趟比较完成后,最后一个数一定是数组中最大的一个数,所以第二趟比较的时候最后一个数不参与比较;
    第二趟比较完成后,倒数第二个数也一定是数组中第二大的数,所以第三趟比较的时候最后两个数不参与比较;
    依次类推,每一趟比较次数-1;
  • 冒泡排序的思维是最简单的,但是代码实现起来并不是很容易。当时用循环来比较的时候,就一直要把链表的节点向后推,但要用一个中间变量temp来保存前面的数字,然后做数字交换,最后把遍历的起始节点重指向头结点。
  • 由于细节比较或是循环问题,速度上体现为:插入排序>选择排序>冒泡排序,三种排序的比较:其时间复杂度都是O(n^2)。

代码调试中的问题和解决过程

  • 问题1:在蓝墨云的作业中,有个要求是实现删除和插入的操作,但是最开始我没有注意到,结果就是

  • 问题1解决方案:听同学说我做的少了很多东西,又重新增加了一些代码,实现了插入和删除结果是

代码托管

上周考试错题总结

  • 理解情况:在做这道题的时候,我太过于钻牛角尖,我认为少了“或费极少的力”,于是错了,但是现在看来更加深了理解。

  • 理解情况:软件工程,不是电气工程。

  • 理解情况:书上的内容,没有认真看书。

  • 理解情况:栈的操作是先进后出,颠倒了数据的顺序,故不能保存顺序。

  • 理解情况:当时没有很理解书上关于增长函数的图表,后来理解之后发现O(2n)的函数增长最快。

  • 理解情况:根据增长函数的图像可知。

结对及互评

  • 博客中值得学习的或问题:

    • 在教材和代码问题上很详细,同时很会找问题记录问题。
  • 代码中值得学习的或问题:
    • 代码操作并没有像我一样忘记很多
    • 对代码的规范性也更加注意了
  • 基于评分标准,我给本博客打分:9分。
  • 20172306

其他(感悟、思考等,可选)

这周有了新的学习任务,开始慢慢找回原来的感觉,但是还是感觉忘了很多东西,着实花了不少功夫,还有因为学代会的召开,耽误的两节课程,我会抓紧时间找同学找老师问问题补回来。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 0/0 1/1 20/20
第二周 941/8481 2/2 18/20

参考资料

  • Java学习笔记(第8版)

  • 《Java学习笔记(第8版)》学习指导

转载于:https://www.cnblogs.com/20172325DYK/p/9671656.html

20172325 2018-2019-1 《Java程序设计》第二周学习总结相关推荐

  1. 2019年JAVA程序设计第二周編程总结

    2019第二周实验报告 Java实验报告 班级 计算机科学与技术二班 学号 20188442 姓名 吴怡君 完成时间 2019/9/7 评分等级 实验一 Java开发环境与简单Java程序 一. 实验 ...

  2. 201871010115——马北《面向对象程序设计JAVA》第二周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

  3. python 基础语法学习笔记(2019年4月第二周学习笔记)

    python day01 2019.4.8 计算机基础,python 变量 1.随机存储器就是内存:断电数据丢失,读写速度快 2.外存储器,硬盘,断电数据依然保存,缺点,读写速度慢 3.操作系统是什么 ...

  4. 20155303 2016-2017-2 《Java程序设计》第二周学习总结

    20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...

  5. 20155313 2016-2017-2 《Java程序设计》第二周学习总结

    20155313 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 1.1 基本类型 整数:可细分为short整数(占2字节).int整数(占4字节)与long ...

  6. 《Java程序设计》第二周学习总结

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

  7. 201871010123-吴丽丽《面向对象程序设计(java)》第二周学习总结

    201871010123-吴丽丽<面向对象程序设计(java)>第二周学习总结                         项目                这个作业属于哪个课程 h ...

  8. 201871010104-陈园园 《面向对象程序设计(java)》第二周学习总结

    201871010104-陈园园 <面向对象程序设计(java)>第二周学习总结 项目 内容 这个作业属于哪个课程 ttps://www.cnblogs.com/nwnu-daizh/ 这 ...

  9. 20155305乔磊2016-2017-2《Java程序设计》第二周学习总结

    20155305乔磊 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 第三章学习了基本类型 整数(short.int.long) 字节(byte) 浮点数(f ...

最新文章

  1. MySQL 故障集锦
  2. LOGO设计价格 之 全面解说和如何选择 【原创】
  3. Fiddler抓取手机APP数据包
  4. 使用 Excel 读取 SAP ABAP CDS View 通过 ODBC 暴露出来的数据
  5. Angular ng-template元素的学习笔记
  6. @RequestParam和@RequestBody和@PathVariable用法小结
  7. 最新用python来操作mysql完全解析
  8. kali系统sftp服务
  9. 猴子摘香蕉问题python_[转载]猴子摘香蕉问题的状态空间表示法
  10. 【学习笔记】密码学入门(3) 密钥,随机数,PGP软件
  11. 如何把UCos-ii_在STM32上的移植
  12. Flutter 图片组件Image、本地图片、远程图片、图片剪切、圆形图片
  13. Mysql对应的dul_免费开放几个PRM-DUL企业版LicenseKey
  14. 快来看!网信办发布《网络信息内容生态治理规定》,涉网暴、水军、流量造假等等...
  15. 前端小知识:控制台打印(console)- 模拟Java日志打印、表格形式打印美化输出对象、代码运行时间统计
  16. 链路聚合(动态捆绑链路)、负载均衡详解、全双工与半双工区别、LACP优先级详解(附图)
  17. 一步一步教你装kata-container
  18. 量身打造的健身管理系统
  19. AI | 人工智能靠什么走向大众
  20. Movies for Hackers

热门文章

  1. 什么是长期存储在计算机外存上的有结构,数据库是长期存储在计算机主存内
  2. oracle vm安装增强功能,Linux 开发环境中为VirtualBox安装增强功能
  3. boost::lexical_cast
  4. csrf攻击 java_java使用jsp servlet来防止csrf 攻击的实现方法
  5. python stdout stderr 一起输出_python – 使用subprocess.Popen()时,stderr和stdout没有输出
  6. 24帧动画走路分解图_人眼只能分辨24帧?我们来聊聊高刷新率的意义
  7. plsql如何显示表结构图_工地新人如何看懂图纸
  8. python云变量_Python之变量的创建过程
  9. 进程间基于共享存储区的通信_IPC(进程间通讯):inter process communication
  10. 应该是最全的算法学习路线了吧法学习路线了吧