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

教材学习内容总结

第八章

  • Java中的错误都会被打包为对象,可以尝试(try)捕捉(catch)代表错误的对象后做出处理。

对于未出错的部分,执行try区块中的程序,如果符合catch括号中声明的错误类型,则执行catch区块中的程序代码。

  • Throwable有 java.lang.Errorjava.lang.Exception 两个子类。程序设计本身的错误一般用Exception及其子类实例出来表现。
  • 如果父类异常对象在子类异常对象之前被捕捉,则catch子类异常对象的区块不会被执行,在编写上会被查出错误。

    如以下两个程序,第一个是错误的第二个是正确的。
try{
System.in.read();
}catch(Exception ex){
ex.printStackTrace();
}catch (IOException ex){
ex.printStackTrace();
} //错误
———————————————————————————
try{
System.in.read();
}catch(IOException ex){
ex.printStackTrace();
}catch (Exception ex){
ex.printStackTrace();
} //正确
  • 如果方法设计的流程中发生异常,在设计时可以抛出异常让调用该方法的客户端来处理。必须使用 throws 声明此方法会抛出的异常类型或父类型。

  • 在任何流程中可以使用 throw 抛出异常,直接跳离原有流程。

  • finally区块一定会被执行。。如果程序流程先return,而且也有finally求爱,则会先执行finally区块再返回值。

    如:

package cc.openhome;

public class C8P248 {
public static void main(String[] args) {
System.out.println(test(true));
}
static int test(boolean flag){
try{
if(flag){
return 1;
}
}finally {
System.out.println("finally...");
}
return 0;
}
}

第九章

  • java.util.Collection中定义了多种方法,如新增对象的add(),移除对象的remove()。都是收集对象的行为。

  • java.lang.Iterable定义了取得对象的行为,定义iterator()方法返回java.util.Iterator操作对象。

  • List是一种Collection,操作类是ArrayList(),需注明 import java.util.ArrayList;

    import java.util.List;

  • 链接(Link)结构:

    1.新建一个class,在内部使用Node封装新增的对象,每次add()后建立新的Node保存对象,形成链状结构。

    2.调用size()或get()时,从第一个对象逐一参考下一个对象并计数。

  • String中的split()方法,可以指定某种方式切割字符串。编写如下:

static Set tokenSet(String line){
String[] tokens=line.split(" ");
//引号内为划分的标志
return new HashSet(Arrays.asList(tokens));
}
  • HashSet操作:

    1.若有新对象要加入HashSet,则调用对象的hashCode()取得哈希码,放入对应号码的哈希桶中。如果桶中没有对象则直接放入,有对象则调用对象的equals()进行比较。(哈希桶我理解为类似一个文件夹)

    2.如果要放入的桶中有对象则调用对象的equals()进行比较,结果为false则两个对象不重复,可以收集。

  • Queue接口:收集对象时一队列形式,新对象加到尾端,从前端取得对象。

    1.offer()方法:用于在队列后端加入对象,成功返回true,失败返回false。

    2.poll()方法:用于取出队列前端对象,队列为空则返回null。

    3.peek()方法:用来取得(但不取出)队列前端对象,队列为空则返回null。(相当于查找)

  • Lambra表达式:参数列 -> 方法本体

  • 常用Map操作类:java.util.HashMap与java.util.TreeMap。HashMap中键是无序的,TreeMap键是有序的。

  • Map的keySet()可以返回Set对象,values()可以返回Collection对象。

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

  • 问题1:hashCode()和equals()的区别和联系。
  • 问题1解决方案:根据百度得知:

初学者可以这样理解,hashCode方法实际上返回的就是对象存储的物理地址。

1、如果两个对象相同(用equals()比较),那么它们的hashCode值一定要相同;

2、如果两个对象的hashCode相同,它们并不一定相同

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

  • 问题1:书中245页,对第五章126页的程序修改及编写中出错如下图:

  • 问题1解决方案:声明java.io.*后显示

idea给出的联想有InsufficientResourcesException类,但是改为这个后输出的格式错误。

  • 问题2:书中266页代码出现以下问题

  • 问题2解决方案:推测return last.elem;应改为

return last.next;

代码托管

  • 代码提交过程截图:

    • 运行 git log --pretty=format:"%h - %an, %cd : %s" 并截图

  • 代码量截图:

    • 运行 find src -name "*.java" | xargs cat | grep -v ^$ | wc -l 并截图

上周考试错题总结

  • 2.填空:使用JDB进行调试时查看源代码的命令是(list)。
  • 12.CH06判断:父类中有个public void fight(),子类中有个public void fight( Weapon w),这两个方法的关系是Override.(X)
  • 17.CH06 判断:Math中的abs()方法可以Override.(X)
  • 23.CH06填空:实现一个类中的equals()方法时,一定要同时实现(hashCode())方法

结对及互评:与20155219付颖卓结对

评分标准

  1. 正确使用Markdown语法(加1分):

    • 不使用Markdown不加分
    • 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
    • 排版混乱的不加分
  2. 模板中的要素齐全(加1分)

    • 缺少“教材学习中的问题和解决过程”的不加分
    • 缺少“代码调试中的问题和解决过程”的不加分
    • 代码托管不能打开的不加分
    • 缺少“结对及互评”的不能打开的不加分
    • 缺少“上周考试错题总结”的不能加分
    • 缺少“进度条”的不能加分
    • 缺少“参考资料”的不能加分
  3. 教材学习中的问题和解决过程, 一个问题加1分

  4. 代码调试中的问题和解决过程, 一个问题加1分

  5. 本周有效代码超过300分行的(加2分)

    • 一周提交次数少于20次的不加分
  6. 其他加分:

    • 周五前发博客的加1分
    • 感想,体会不假大空的加1分
    • 排版精美的加一分
    • 进度条中记录学习时间与改进情况的加1分
    • 有动手写新代码的加1分
    • 课后选择题有验证的加1分
    • 代码Commit Message规范的加1分
    • 错题学习深入的加1分
  7. 扣分:

    • 有抄袭的扣至0分
    • 代码作弊的扣至0分

点评模板:

  • 基于评分标准,我给本博客打分:11分。

  • 得分情况如下:

    1.正确使用Markdown语法:+1

    2.模板中的要素齐全:+1

    3.教材学习中的问题和解决过程:+1

    4.代码调试中的问题和解决过程:+3

    5.本周有效代码超过300分行的:+2

    6.其他加分:

  • 排版精美:+1

  • 进度条中记录学习时间与改进情况:+1

  • 代码Commit Message规范+1

  • 参考示例

点评过的同学博客和代码

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

学习需要耐心细心,最重要的是持之以恒。这本教材有些地方写的不太清楚,需要自己查证,百度上的内容又比较杂乱,有时候让人心烦。

这种时候我一般暂时放下学习,放松一下心情,调整心态后再继续。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 2000行 30篇 200小时
第一周 20/20 1/1 4/4
第二周 73/93 1/2 4/8
第三周 231/324 1/3 6/14
第四周 842/1166 1/4 15/29
第五周 1134/2300 1/5 21/50

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。

耗时估计的公式

:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

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

  • 计划学习时间:15小时

  • 实际学习时间:21小时

  • 改进情况:

(有空多看看现代软件工程 课件

软件工程师能力自我评价表
)

参考资料

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

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

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

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

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  3. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

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

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

  5. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

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

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

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

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  8. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

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

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

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

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

随机推荐

  1. Eclipse 打包jar

    1.将项目打成jar: 1.1 要将项目打包成jar文件,方法很多,可以用Eclipse自带的打包工具Ant打包,也可以用Eclipse的Export生成jar.经过尝试后,我不推荐用Ant打包,因为 ...

  2. Python 爬虫-Requests库入门

    2017-07-25 10:38:30 response = requests.get(url, params=None, **kwargs) url : 拟获取页面的url链接∙ params :  ...

  3. Confluence 6 从外部目录中同步数据支持的目录类型

    针对一些特定的用户目录类型,Confluence 在系统的数据库中保存了目录的缓存信息(用户和用户组),这样能够让系统更快速的访问用户和用户组数据.一个数据同步的进程将会间歇性的在系统中运行来将远程的 ...

  4. Python下图片的高斯模糊化的优化

    资源下载 #本文PDF版下载 Python下图片的高斯模糊化的优化(或者单击我博客园右上角的github小标,找到lab102的W6目录下即可) #本文代码下载 高斯模糊(一维)优化代码(和本文方法集 ...

  5. tomcat8w.exe 运行 提示 指定的服务未安装 unable to open the service 'tomcat8'

    新下载的Tomcat8 解压版,解压缩完成后,双击tomcat8.exe出现个DOS样子的窗口一闪而过消失了,tomcat也没有启动成功.双击tomcat8w.exe 弹出个错误对话框,说“指定的服务 ...

  6. hdu6405Make ZYB Happy 广义sam

    题意:给出n(n<=10000)个字符串S[1~n],每个S[i]有权值val[i],随机等概率造一个由小写字母构成的字符串T,Sum = 所有含有子串T的S[i]的val[i]之积,求Sum的 ...

  7. Linux文件与目录管理(一)

    一.Linux文件与目录管理 1.Linux的目录结构是树状结构,最顶级的目录是根目录/(用"/"表示) 2.Linux目录结构图: /bin:bin是Binary的缩写,这个目录 ...

  8. 数据库cmd窗口登录

    mysql -uroot -p123 -P3306 -h127.0.0.1 -uroot::root数据库登录用户名 -p123:数据库密码123 -P3306::3306数据库的端口号 -h127. ...

  9. James Whittaker:经营成功的测试职业生涯

    转注:这篇文章出自 James A. Whittaker,Google的工程总监,负责Google部分产品的测试,包括Chrome.地图.GoogleWebApp.在加盟Google之前,James在 ...

  10. sgu107. 987654321 problem 简单打表 难度:0

    107. 987654321 problem time limit per test: 0.25 sec. memory limit per test: 4096 KB For given numbe ...