20155320 2016-2017-2 《Java程序设计》第五周学习总结

教材学习内容总结

错误处理

  • java中所有错误都会被打包为对象,可以通过try catch 代表错误的对象后做一些处理。

    TtryCatchf 处理范例 Average2Average3

    运行结果为:

  • 错误会被包装为对象,这些对象都是可抛出的,设计错误的对象都继承自java.lang.Throwable
  • 如果某个方法声明抛出Throwable或子类实例,只要不是属于Errorjava.lang.RuntimeException或其子类实例,就必须1.明确使用try、catch语法加以处理2、用throws声明这个方法会抛出异常。否则会编译失败
  • exception及其子对象称为受检异常,必须做出处理
  • InputMismatchException为一种RuntimeException
    避免出现InputMismatchException的程序Average4

    运行结果为:

  • String的match()方法中设定了"\d*"表示检查字符串中的字符是不是数字。
  • 如果父类异常对象在子类异常对象前被捕捉,则catch子类异常对象区块将永不执行,则会被编译程序检查出错
  • catch括号中列出的异常不得有继承关系。
  • 对于受检异常,如果当前环境不足以处理异常,必须使用throws声明此方法会抛出的异常类型或父类型由调用方法客户端处理,才能通过编译。
  • 在catch区块进行完部分错误处理之后,可以使用throw将异常抛出,在程序中如果抛出的是受检异常,则必须在方法上使用throws声明
    代码范例FileUtil2

  • 如果使用继承时,父类某个方法声明throws某些异常,子类重新定义该方法时不可以1.throws父类方法中未声明的其他异常2.throws父类方法中声明异常的父类
  • 查看堆栈追踪可以直接调用printStackTrace()
    程序房里StackTraceDemo

    运行结果:

结果显示了异常类型,最顶层是异常的根源,以下是调用方法的顺序:

  • 想要取得个别的堆栈追踪元素进行处理,则可以使用``getStackTrace()```,这会返回StackTraceElement数组
  • 若要用堆栈追踪,程序中不可有私吞异常。
  • 用throw重抛异常时,异常的追踪堆栈起点,仍是异常的发生根源,而不是重抛异常的地方。
    程序StackTraceDemo2

    运行结果为:

  • 若要堆栈起点为重抛的地方,可以使用fillInStackTrace(),并返回Throwable()对象。
    程序fillStrackTrace()

  • 断言可以使用assert关键字,若要执行时启动断言检查,可在执行java指令时,指定-enableassertions或是-ea自变量
  • 因错误而抛出异常时,抛出异常处之后的程序代码就不会被执行。但若有finally区块,则finally区块一定会被执行。
    程序FinallyDemo

    运行结果为:

  • 若一个异常被catch后的处理过程引发另一个异常,通常会抛出第一个异常作为响应,addSuppressed()方法可将第二个异常记录在第一个异常中,getSuppre()可以返回Throwable[],代表先前被addSuppressed()记录的各个异常对象。
  • AutoCloseable接口仅定义了close()方法,只要操作这个接口,就可以套用至尝试关闭资源语法。
    AutoCloseable操作程序

    运行结果为:

  • 关闭资源语法课同时关闭两个以上的对象资源,中间以分号分隔,try的括号中越后面撰写的对象资源会越早被关闭
    AutoClosable2

    运行结果为:

Collection与Map

  • List是一种Collection,作用是收集对象,并以索引方式保留收集的对象顺序。
  • ArrayList 是使用Object数组来保存收集的对象,根据索引随机存取时速度快但调整索引顺序时不便,且数组长度固定;LinkeList采取了链接结构,查找起来会比较没有效率,排序就比较不适合使用List。
    具有索引的List

SimpleLinkedList

  • 在收集过程中若有相同对象则不重复收集,可以使用Set接口的操作对象。String的split()方法可以指定切割字符串的方式,split会返回String[],HashSet可实现收集对象,其toString()则会包括收集的字符串。
    程序WordCount

运行结果为:

  • HashSet 会使用对象的hashCode()equals()来判断对象是否相同

    程序students

    运行结果为:

    程序students2

    运行结果为:

  • 若对象有操作Queue,并打算以队列方式使用,且队列长度受限,通常建议 使用offer(),poll()peek()等方法。
    程序RequestQueue

  • Queue的子接口Deque就定义了这类行为,offerLast()等操作失败时会返回特定值
    程序Stack

    运行结果为:

  • 泛型语法可以在设计API时指定类或方法支持泛型,并得到编译时期检查,使用<>表示支持泛型。
    程序ArrayList

  • 使用Lambda可避免信息重复。

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

  • 学习第九章时,对HashSet中Arrays.asList()的作用清楚,在后边又出现了List names=Arrays.asList("Justin","Monica","Irene")
  • 通过百度阅读了一些相关博客了解到

    Arrays.asList()的作用是将数组转为List(列表)

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

  • 在第八章中学习错误抛出时,我在写程序Average3时,由于不注意将trycatch的位置打在了循环的外部,结果出现了如下错误:
  • 后通过比照课本代码,正确修改了过来,我同时通过百度发现无论是在c++还是java中,try catch似乎都不能出现在循环外。

    代码托管

  • 代码量截图:

上周考试错题总结

  • 21.判断:XX是一个引用型变量,System.out.println(XX)等价于System.out.println(XX.toString()).(OK),在用println时toString可以不用打出来,是等价的
  • CH06填空:实现一个类中的equals()方法时,一定要同时实现(hashCode())方法;java中许多要判断对象是否重复时,都会调用hashCode()与equals()方法,因此规格书中建议两个方法必须同时操作。
  • 30.填空:面向对象中,设计经验可以用(设计模式)表达
  • 4.判断:抽象类的子类可以是抽象类也可以不是。(OK);在子类中可以重新定义父类中的抽象方法

结对及互评

20155326刘美岑的博客

基于评分标准,我给本博客打分:8分。得分情况如下:

  • 正确使用Markdown语法:+1
  • 模板中的要素基本齐全:+1
  • 教材学习中的问题和解决过程:+3
  • 代码调试中的问题和解决过程:+2
  • 进度条中记录学习时间与改进情况:+1

点评过的同学博客和代码

  • 20155326

    学习感悟及思考

    本周学习了异常处理以及Collection与Map相关的内容,尤其是抛出异常部分,让我感受到了java语言的特别之处,这在学习c语言时是不曾有过的。而第九章中的不同种操作了List接口的对象优缺点与最近学习的数据结构不同存储结构的优缺点相互联系了起来,虽然这个星期学习任务较重,在一些部分的学习上遇到了困难,但感觉学习的这些专业课程开始相辅相成了起来,也是一大收获。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 15篇 400小时
第一周 20/20 1/4 20/20 安装了JDK及IDEA
第二周 144/164 1/5 18/38 学习了java语言的基本语法
第三周 447/567 1/6 20/ 58 掌握了一些有关对象和封装的内容
第四周 875/ 1442 1/7 23/81 学习了解了继承、接口和多态的相关问题
第五周 775/2250 1/8 25/106 学习了异常处理以及Collection与Map相关的内容

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

参考资料

20155320 2016-2017-2 《Java程序设计》第五周学习总结的更多相关文章

  1. 201521123025<java程序设计>第五周学习总结

    1. 本周学习总结 2. 书面作业 1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误.并分析输出结果. 1.2 ...

  2. Java程序设计第五周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 2. 书面作业 **代码阅读:Child压缩包内源代码 Child.java源代 ...

  3. 20155320 2016-2017-2《Java程序设计》第九周学习总结

    20155320 2016-2017-2<Java程序设计>第九周学习总结 教材学习内容总结 第十六章 JDBC简介 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 ...

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

    20155320 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 本周主要学习了java语言的基础语法,我发现与以前学过的c语言有许多共同点,无论是从一些基本 ...

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

    20155326 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 1.撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找. 2.JDBC目的 ...

  6. 20155227 2016-2017-2 《Java程序设计》第九周学习总结

    20155227 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是java联 ...

  7. 20155328 2016-2017-2 《Java程序设计》第九周学习总结

    20155328 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 16.1 JDBC入门 JDBC是Java联机数据库的标准规范,定义一组标准类与接口,应用程 ...

  8. 20155216 2016-2017-2 《Java程序设计》第九周学习总结

    20155216 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC架构 JDBC API的使用 JDBC连接数据库 1.导入JDBC包: 添加impo ...

  9. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  10. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

随机推荐

  1. 迷你MVVM框架 avalonjs 1.3.8发布

    avalon1.3.8主要是在ms-repeat. ms-each. ms-with等循环绑定上做重大性能优化,其次是对一些绑定了事件的指令添加了roolback,让其CG回收更顺畅. 重构ms-re ...

  2. python处理分隔大文件

    4个.sql格式的文件,2G大小,直接插入mysql数据中,文件太大了,导入不进去. 太大的文件用python处理也很麻烦,处理不了,只能先分隔成小文件处理. 文件中数据格式:其中values里面的数 ...

  3. Linux就业技术指导(一):简历撰写及面试筹备要领

    一,开场 二,模型 三,目标选材 3.1 什么是目标选材 简单说就是确定一个候选人是否符合某一个工作岗位要求的整个流程.这是对招聘方的一个培训,应聘方如果掌握了,就知道应该怎样正确的去应聘工作. 3. ...

  4. IDEA 码云 安装

    安装方式: 从IDEA插件仓库搜索Gitee下载并安装即可. 登陆并拉取项目代码 1. 启动 idea,选择Check out from Version Control-码云 2. 输入用户名和密码, ...

  5. MySql LeftJoin On 与 Where的差异

    [MySql LeftJoin On 与 Where的差异] 存在两张表: 分别插入数据: 下面的语句一与语句二会产生不同的结果: 语句一: 结果: 语句二: 结果: 为什么会存在差异,这和on与wh ...

  6. webdriver自动化脚本

    1.需求如下: 启动火狐浏览器首先打开百度,等待3秒然后打开博客首页,等待2秒然后关闭浏览器 from selenium import webdriver from time import sleep ...

  7. mac安装protobuf2.4.1时报错./include/gtest/internal/gtest-port.h:428:10: fatal error: 'tr1/tuple' file not found和google/protobuf/message.cc:175:16: error: implicit instantiation of undefined template

    通过网上下载的protobuf2.4.1的压缩文件,然后进行安装,./configure和make时遇到了两个问题. 正常的安装步骤如下: ./configure make  make check m ...

  8. 删除Eclipse已有的SVN资源库位置

    点击Eclipse菜单栏的[Window]->[Show View]->[Other],在弹出的对话框中,选择[SVN]->[SVN资源库],然后点击[OK]. 接着,在Eclips ...

  9. cdoj203-Islands 【并查集】

    http://acm.uestc.edu.cn/#/problem/show/203 Islands Time Limit: 30000/10000MS (Java/Others)     Memor ...

  10. 快速排序C++实现

    #include<iostream> using namespace std;class quicksort{ public: int quicks(int *a,int low,int ...