20155236 2016-2017-2 《Java程序设计》第五周学习总结
20155236 2016-2017-2 《Java程序设计》第五周学习总结
教材学习内容总结
- Java的异常处理是通过5个关键字来实现的:try,catch,throw,throws,finally。
- throws总是出现在一个函数头中,用来标明该成员函数可能抛出的各种异常。如果你想明确地抛出一个RuntimeException,你必须用throws语句来声明它的类型。
- throw总是出现在函数体中,用来抛出一个异常。程序会在throw语句后立即终止,它后面的语句执行不到,然后在包含它的所有try块中(可能在上层调用函数中)从里向外寻找含有与其匹配的catch子句的try块。
- try语句用大括号{}指定了一段代码,该段代码可能会抛弃一个或多个例外。
- Catch:
1.catch语句的参数类似于方法的声明,包括一个例外类型和一个例外对象。例外类型必须为Throwable类的子类,它指明了catch语句所处理的例外类型,例外对象则由运行时系统在try所指定的代码块中生成并被捕获,大括号中包含对象的处理,其中可以调用对象的方法。
2.catch语句可以有多个,分别处理不同类的例外。Java运行时系统从上到下分别对每个catch语句处理的例外类型进行检测,直到找到类型相匹配的catch语句为止。这里,类型匹配指catch所处理的例外类型与生成的例外对象的类型完全一致或者是它的父类,因此,catch语句的排列顺序应该是从特殊到一般。
3.也可以用一个catch语句处理多个例外类型,这时它的例外类型参数应该是这多个例外类型的父类,程序设计中要根据具体的情况来选择catch语句的例外处理类型。 - offer:添加一个元素并返回true,如果队列已满,则返回false
poll:移除并返问队列头部的元素,如果队列为空,则返回null
peek:返回队列头部的元素,如果队列为空,则返回null。 - HashMap:建立的键值对应是无序的
TreeMap:建立的键值对应是有序的
values方法是获取集合中的所有的值,没有键,没有对应关
KeySet是将Map中所有的键存入到set集合中。因为set具备迭代器。所有可以迭代方式取出所有的键,再根据get方法。获取每一个键对应的值。keySet():迭代后只能通过get()取key。
教材学习中的问题和解决过程
- P265页的代码好像有问题啊。。,老师可不可以重点讲一下栈啊= =,感觉有点理解不了。
代码调试中的问题和解决过程
- P265的
SimpleLinkedList.java
中的
private Object findElemOf(int index) {
int count = 0;
Node last = first;
while(count < index) {
last = last.next;
count++;
}
return last.elem;
}
}
此段代码的作用是将收集的对象用Node封装,再根据第一段的代码,return的值就应该是last.o而不是last.elem。
Students.java
中System.out.println()
括号中应该是students而不是set。
代码托管
-
代码提交过程截图:
- 运行 git log --pretty=format:"%h - %an, %cd : %s" 并截图
- 运行 git log --pretty=format:"%h - %an, %cd : %s" 并截图
-
代码量截图:
- 运行 find src -name "*.java" | xargs cat | grep -v ^$ | wc -l 并截图
- 运行 find src -name "*.java" | xargs cat | grep -v ^$ | wc -l 并截图
上周考试错题总结
- JDB调试时单步执行命令有step和next,我们优先使用(next),next是把函数执行完成,step会跳进函数内部。
System.out.println( “HELLO”.( toLowerCase() ) )
会输出“hello”“Hello”.substring( 0,2 )
的值是“He”,如果括号里面是整数的话,就会从前往后数相应个位置再继续往后输入。substring的运用。- Math中的abs()方法可以Override。而且abs()方法返回的是绝对值,不能进行重写。
结对及互评
评分标准
-
正确使用Markdown语法(加1分):
- 不使用Markdown不加分
- 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
- 排版混乱的不加分
-
模板中的要素齐全(加1分)
- 缺少“教材学习中的问题和解决过程”的不加分
- 缺少“代码调试中的问题和解决过程”的不加分
- 代码托管不能打开的不加分
- 缺少“结对及互评”的不能打开的不加分
- 缺少“上周考试错题总结”的不能加分
- 缺少“进度条”的不能加分
- 缺少“参考资料”的不能加分
-
教材学习中的问题和解决过程, 一个问题加1分
-
代码调试中的问题和解决过程, 一个问题加1分
-
本周有效代码超过300分行的(加2分)
- 一周提交次数少于20次的不加分
-
其他加分:
- 周五前发博客的加1分
- 感想,体会不假大空的加1分
- 排版精美的加一分
- 进度条中记录学习时间与改进情况的加1分
- 有动手写新代码的加1分
- 课后选择题有验证的加1分
- 代码Commit Message规范的加1分
- 错题学习深入的加1分
-
扣分:
- 有抄袭的扣至0分
- 代码作弊的扣至0分
点评过的同学博客和代码
其他(感悟、思考等,可选)
感觉自己的动手能力略差,思维有一些定式,不能熟练运用idea,不会调试程序啊= =,好尴尬。而且对于一些问题,不能总结自己的错误,并不能具体的描述自己的疑惑。。。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 10/10 | 1/1 | 10/10 | |
第二周 | 100/100 | 2/2 | 19/25 | |
第三周 | 200/278 | 1/3 | 10/26 | |
第四周 | 660/938 | 1/4 | 10/36 | |
第五周 | 1100/2100 | 1/5 | 18/54 |
-
计划学习时间:20小时
-
实际学习时间:18小时
-
改进情况:多次学习教材,对于不能理解的地方进行答疑,但是还是有很多地方没有弄清楚,仍有待改进。
参考资料
无0.0