20165233 Java第八、十五章学习总结

20165233 2017-2018-2 《Java程序设计》第六周学习总结

教材学习内容总结

ch08

  • 基础:String类
  • 重点:StringTokenizer类、Scanner类;获取字符序列中被分隔符分隔的单词。
  • 拓展:StringBuffer类、Date类与Calendar类(程序需要处理时间时使用)、日期格式化、Math类、BigInteger类(程序需要处理特别大的整数)与Random类、数字格式化(当需要格式化日期和数字时,使用String类的static方法format)
  • 难点:Class类与Console类、Pattern类与Match类

ch15

  • 泛型:使用“class 名称<泛型列表>”声明一个泛型类,当使用泛型类声明对象时,必须要用具体的类型(不能是基本数据类型)替换泛型列表中的泛型。
  • 链表:LinkedList泛型类创建的对象以链表结构存储数据。
  • 堆栈:Stack泛型类创建一个堆栈对象,堆栈总是在顶端进行数据的输入输出操作。
  • 散列映射:HashMap<K,V>用于存储键/值数据对,使用散列映射来存储经常需要检索的数据,可以减少检索的开销。
  • 树集:TreeSet类创建树集,当一个树集中的数据是实现Comparable接口类创建的对象时,结点就按对象的大小关系升序排列。
  • 树映射:TreeMap<K,V>类创建树映射时,树映射的结点存储键/值对,和树集不同的是,树映射保证结点是按照结点中的键升序排列。

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

  • 问题1:教材192页Example8_12的程序中,%-7.2f的含义是什么?
  • 问题1解决方案:查找教材的207页得到了答案。%-md指在数字右面加空格,数字长度为7,且保留两位小数。
  • 问题2:为什么Scanner类没有传单词个数的方法呢?
  • 问题2解决方案:Scanner类不把单词存放到Scanner对象的实体中,仅仅存放怎样获取单词的分隔标记来节省内存空间,这样Scanner类就不像StringTokenizer类的对象一旦诞生就立刻知道单词数目,并通过countTokens()方法返回单词数目,Scanner类必须一个一个地获取才能知道单词数目。
  • 问题3:教材198页Example8_15中,month = calendar.get(Calendar.MONTH)+1为什么要加1?
  • 问题3解决方案:由于程序本身计算月份是从0开始,加1后符合人们的认知习惯。
  • 问题4:教材199页Example8_16中,声明的String数组的大小为42?(一个月只有最多31天)
  • 问题4解决方案:由于输出日历要与星期数相对应,所以会有空格占位置,一行7个位置对应一周7天,六行是因为,如果一个月的第一天是周六,那么有几天的日期会依次顺延到第6行,所以声明的大小为42。

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

  • 问题1:教材182页中的Example8_4.java的例子,运行后应该是可以从键盘输入若干个数的,但是我运行后直接输出sum=0.0的结果是为什么?

  • 问题1解决方案:这个问题暂时没有解决,没有找到原因。用命令行与IDEA运行结果都是如此。
  • 问题2:教材183-184页中的Example8_5.java,运行报错是找不到符号Date

  • 问题2解决方案:教材中的主类的程序中,缺少import java.util.Date;的语句,导致无法找到Date。更改之后运行正常。

代码托管

上周考试错题总结

  • 第五周课下测试尚未截止,无法订正答案,随后补上。

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

本周学习内容中第8章的内容,不是特别难理解,重在运用,可以通过许多常用类简化自己的程序,不用自己设计复杂的算法。常用类种类繁多,每个类都有自己的分工,也体现出Java的“高内聚”,即对象的单一性与内聚性。第15章内容与数据结构有很大的关联性,也有细微的区别,也是更方便存储与处理数据的一些方法。

posted @ 2018-04-07 16:57  minchan0624  阅读(271)  评论(1编辑  收藏  举报