20182311 2019-2020-1 《数据结构与面向对象程序设计》第7周学习总结

目录

  • 教材学习内容总结

    • 教材第12章
    • 教材第14章
    • 教材第15章
  • 教材学习中的问题和解决过程
  • 代码调试中的问题和解决过程
  • 代码托管 2
  • 结对及互评
    • 点评过的同学博客和代码
  • 感悟
  • 学习进度条
  • 参考资料

正文

20182311 2019-2020-1 《数据结构与面向对象程序设计》第7周学习总结

教材学习内容总结

教材第12章

  • 算法效率可以用问题大小(n)和及处理步骤来定义。增长函数表示问题大小与希望优化的值之间的关系,该函数表示算法的时间或空间利用率。
  • 我们更关心算法的渐进复杂度,用来表示增长函数的一半特性。渐进复杂度称为算法的阶,用O表示,括号里放的是函数的主项,即增长最快的一项。
  • 处理器速度和内存不能弥补算法效率的差异,所以如果算法效率不高,处理器速度的提高没有效果。
  • 计算调用方法和循环的阶,分别求再相乘。

教材第14章

  • 集合:收集并组织其他对象的对象,定义访问了访问及管理集合元素的方法。分为线性集合和非线性集合。集合元素之间的组织方式有加入次序和固有关系决定。
  • 抽象数据类型是取值和操作都没有在语言中定义的一种数据类型。集合就是一个抽象名称。泛型是指保存、操作并管理指导实例化时才确定的类型的对象。
  • 栈集合(LIFO原则,先进后厨)
    • 用数组实现栈:利用数组实现栈会出现假溢出的问题,对于数组实现栈的管理容量办法可以定义一个自动扩容方法(声明一个更大数组来存放栈的值)。对数组来说,默认讲下表为0处当作栈底,需要用一个整型来标记栈顶的位置,即最后插入元素的后一位null,该整型也可用来表示栈内元素个数。
    • 用链表实现栈:使用链表实现栈永远不会出现容量问题,使用一个对象变量作为指针保存头指针,否则会丢失链表。访问链表的方式只能从头指针向后遍历。
  • 链表分为单向链表和双向链表,基本由一个结点类(存有指针和本身的数据)和一个链表类实现(存有头指针,含有实现结点排序,删除,插入等方法),双向链表可用于树的实现。插入和删除结点操作要注意修改引用的次序,以防数据丢失。
  • 包:可以按代码功能组织为包,放在package中当作自定义类库使用。

教材第15章

  • 队列(queue):同样是线性结构,FIFO先进先出,含有入队、出队、取头、判断、和计数的方法。
  • 使用循环队列为凯撒加密使用重复编码k值提供良好方式。
  • 循环队列的实现:使用数组实现队列时把数组看成一个环,避免移动元素造成的空间浪费。对指针求模,实现下标的改变,再使用计数判断队列是否满或空,执行自动扩容等操作。使用链表实现队列与实现栈类似

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

  • 问题1:怎样讲前缀表达式转成后缀表达式?
  • 问题1解决方案:需要用到两个栈,一个用来存运算符,一个用来存数字。先把所有字符存入栈1,再不断pop。若pop出的是数字,直接存入栈2,若pop出的是字符串,就从栈2中取出两个字符串拼接,再放回去。拼接时要注意顺序。
  • 问题2:如何搭建出一个链表?怎么理清楚把方法具体放在哪个类中?
  • 问题2解决方案:由点连线,先构造一个节点类,在节点中定义变量储存自身元素和指向下一个链表的地址,定义与变量有关的方法。构造一个链表类,链表定义变量储存头节点和指针等,定义与批量处理结点有关的方法。

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

  • 问题1:凯撒加密的加解密错误?
  • 问题1解决方案:这是一个符号打错了造成的误会。
  • 问题2:定义变量对象数组后,调用对象数组单个元素出现空指针异常
  • 问题2解决方法:单纯用 Student[] s=new Student()只能算声明了一个对象数组,还需要后续赋值s[i] =new Student()才算实例化成功,才能调用对象的方法。

代码托管 2

结对及互评

点评过的同学博客和代码

  • 本周结对学习情况

    • 20182303

感悟

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 10000行 30篇 400小时
第一周 246/246 2/2 30/30 初步掌握linux命令、java小程序和jdb调试
第二周 73/319 3/3 30/60
第三周 906/1225 3/6 20/80
第四周 748/1973 2/8 20/100
第五周 849/2822 2/10 20/120
第六周 962/ 3784 2/12 30/150
第七周 1883/5668 3/15 50/200

参考资料

-Java-对象数组空指针异常问题

原文地址:https://www.cnblogs.com/lengchong/p/11788027.html

时间: 2024-10-08 01:05:21

20182311 2019-2020-1 《数据结构与面向对象程序设计》第7周学习总结的相关文章

《数据结构与面向对象程序设计》第四周学习总结

20182304 2019-2020-1 <数据结构与面向对象程序设计>第四周学习总结 教材学习内容总结 1.本章我们学习了使用并编写我们自己的类:类中有与类同名的构造方法,也可以有set,get,toSring与自己定义的方法.实例化一个对象,可通过该对象使用类里的所有方法.实例数据是每次创造一个实例后自动生成新的内存空间的变量 2.uml类图 :每个类可能包含三部分内容:类名.属性.操作(方法).UML类图有属于自己的语法,变量的类型名在变量名的后面,它们之间用冒号作为分隔符,方法的+和-

20182306 2019-2020-1 《数据结构与面向对象程序设计》第五学习总结

20182306 2019-2020-1 <数据结构与面向对象程序设计>第五学习总结 教材学习内容总结 尽量简单的总结一下本周学习内容 尽量不要抄书,浪费时间 看懂就过,看不懂,学习有心得的记一下 教材学习中的问题和解决过程 问题1:XXXXXX 问题1解决方案:XXXXXX 问题2:XXXXXX 问题2解决方案:XXXXXX ... 代码调试中的问题和解决过程 问题1:XXXXXX 问题1解决方案:XXXXXX 问题2:XXXXXX 问题2解决方案:XXXXXX ... 代码托管 (stat

20182335 2019-2020-1 《数据结构与面向对象程序设计》第四周学习总结

教材学习内容总结 1.继承的基本语法与用法. 2.利用UML类图表示继承关系. 3.在具体编写类的时候,先是数据声明再是方法声明. 4.toString方法用println或print或字符串连接会自动调用. 5.每创建一个对象.都会为类中声明的变量建立新的内存空间. 6.UML图一些基础使用方法. 7.对象应该是自管理的,既对象的实例数据应该仅由该对象来修改,这就构成了封装. 代码调试中的问题和解决过程 问题1:测试代码出现错误 问题1解决方案:junit的方法名必须是textxxx或xxxt

20182322 2019-2020-1 《数据结构与面向对象程序设计》第四周学习总结

教材学习内容总结 1.编写类与方法(构造方法的结构和用途) 2.实际参数与形式参数.public与private.return与void的区别与含义. 3.UML类图的含义与形式 4.静态类(Math类)静态变量.静态方法 5.类间关系(依赖关系.聚合关系.继承关系) 6.接口的使用,能够在某个类中实现接口的方法(Comparable.Iterator) 7.软件活动开发.方法设计.方法重载.测试(黑盒测试.白盒测试) 教材学习中的问题和解决过程 问题1:toString与return返回的值的

20182311 2019-2020-1 《数据结构与面向对象程序设计》实验二报告

20182311 2019-2020-1 <数据结构与面向对象程序设计>实验二报告 课程:<程序设计与数据结构> 班级: 1823 姓名: 冷冲 学号:20182311 实验教师:王志强 实验日期:2019年9月16日 必修/选修: 必修 1.实验内容 (1) 编写简单的计算器,完成加减乘除模运算. (2) 要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出. (3) 编写测试代码,测试验证.(https://www.cnbl

20182311 2019-2020-1 《数据结构与面向对象程序设计》实验四报告

20182311 2019-2020-1 <数据结构与面向对象程序设计>实验四报告 课程:<程序设计与数据结构> 班级: 1823 姓名: 冷冲 学号:20182311 实验教师:王志强 实验日期:2019年9月30日 必修/选修: 必修 1.实验内容 (一)Java Socket编程 1.学习蓝墨云上教材<Java和Android编程>"第16章 输入/输出 "和"第22章 网络",学习JavaSocket编程 2.结对编程.结

20182311 2019-2020-1 《数据结构与面向对象程序设计》实验五报告

20182311 2019-2020-1 <数据结构与面向对象程序设计>实验五报告 课程:<程序设计与数据结构> 班级: 1823 姓名: 冷冲 学号:20182311 实验教师:王志强 实验日期:2019年10月16日 必修/选修: 必修 1.实验内容 1.Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)>第二十四章: 参考http://www.cnblogs.c

20182311 2019-2020-1 《数据结构与面向对象程序设计》第4周学习总结

目录 教材学习内容总结 教材4.8.1及第五章 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周考试错题总结 结对及互评 点评过的同学博客和代码 感悟 学习进度条 参考资料 正文 20182311 2019-2020-1 <数据结构与面向对象程序设计>第4周学习总结 教材学习内容总结 教材4.8.1及第五章 迭代器和for循环 类和对象:子类与父类:继承.声明一个类不会分配内存空间,只有实例化对象才会分配空间.目前已知两种调用类的方法,通过实例化的对象调用,静态方法直接使

20182311 2019-2020-1 《数据结构与面向对象程序设计》第8周学习总结

目录 教材学习内容总结 教材第13章 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 结对及互评 点评过的同学博客和代码 感悟 学习进度条 参考链接 正文 20182311 2019-2020-1 <数据结构与面向对象程序设计>第8周学习总结 教材学习内容总结 教材第13章 查找 线性查找:改进方法:设立哨兵,即将数组下标为0的内容设定为需要查找的数字,这样可以减少每次循环都对下标与最大值的比较,优化算法. 折半查找:时间复杂度为O(log2n),效率高,但只能用于有序线性存