20155302 2016-2017-2《Java程序设计》第五周学习总结
20155302 2016-2017-2 《Java程序设计》第5周学习总结
教材学习内容总结
- 异常类从哪里来?有两个来源,一是Java语言本身定义的一些基本异常类型,二是用户通过继承Exception类或者其子类自己定义的异常。Exception 类及其子类是 Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件。
- Java异常处理通过5个关键字try、catch、throw、throws、finally进行管理。基本过程是用try语句块包住要监视的语句,如果在try语句块内出现异常,则异常会被抛出,你的代码在catch语句块中可以捕获到这个异常并做处理;还有以部分系统生成的异常在Java运行时自动抛出。你也可以通过throws关键字在方法上声明该方法要抛出异常,然后在方法内部通过throw抛出异常对象。finally语句块会在方法执行return之前执行
- Java语言提供两种异常处理机制:捕获异常和声明抛弃异常;
捕获异常:在Java程序运行过程中系统得到一个异常对象是,它将会沿着方法的调用栈逐层回溯,寻找处理这一异常的代码。找到能够处理这种类型异常的方法后,运行时系统把当前异常交给这个方法处理;如果找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。捕获异常是通过try-catch-finally语句实现的。语法为:
try{ ... }catch(ExceptionName1 e){ ... }catch(ExceptionName2 e){ ... } ... }finally{ ... }
声明抛弃异常:当Java程序运行时系统得到一个异常对象时,如果一个方法并不知道如何处理所出现的异常,则可在方法声明时,声明抛弃异常。声明抛弃异常是在一个方法声明中的throws子句中指明的。如:
public int read() throws IOException{ ... }
- Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。
- Map没有继承Collection接口,Map提供key到value的映射。一个Map中不能包含相同的key,每个key只能映射一个value。Map接口提供3种集合的视图,Map的内容可以被当作一组key集合,一组value集合,或者一组key-value映射。
- Collection接口是 Set 、List 和 Queue 接口的父接口,提供了多数集合常用的方法声明,包括 add()、remove()、contains() 、size() 、iterator() 等。
- List 关心的是索引,与其他集合相比,List特有的就是和索引相关的一些方法:get(int index) 、 add(int index,Object o) indexOf(Object o) 。
- 支持队列操作的Queue收集的对象加入至尾端,取得对象时从前端,则可以使用Queue接口的操作的对象,Queue定义了自己的offer()、poll()、peek()等方法最主要差别在于,add()、remove()、element()、等方法操作失败时会抛出异常,而offer()、poll()与peek()等方法操作失败时会返回特定值。
- 无论List、Set还是Queue都会有个iterator()方法,是定义在Collection接口中,而List、Set、Queue继承自Collection,所以也都拥有iterator()的行为。
- 对多异常处理 1.声明异常时,建议声明更为具体的异常,这样处理得可以更具体 2.声明几个异常,就对应有几个catch块,不要定义多余的catch快。 如果有多个catch块中的异常出现继承关系,父类异常catch块放在下面。
- 异常对象包含的常用方法: 1.getMessage();返回该异常的详细描述字符 2.printStackTrace():将该异常的跟踪栈信息输出到标准错误输出。 3.printStackTrace(PrintStream s):将该异常的跟踪栈信息输出到指定的输出流 4.getStackTrace():返回该异常的跟踪栈信息。
教材学习中的问题和解决过程
JAVA里的异常处理有什么用?为什么不直接改?既然说执行的时候出错的为什么还要那么麻烦使用try-catch 和throw,throws?执行出错了Java告诉我错在哪里了直接改不就好了,比如我写代码的时候写1/0。执行的时候系统直接给出ArithmeticException为啥还要那么辛苦try{1/0}catch(ArithmeticException){解决的方法}?
解答:(在百度上找到了答案)
代码调试中的问题和解决过程
public static void main(String[] args) {
//"abcadfasdffdsa"输出对应字母和次数
String str ="abcadfasdffdsa";
char[] arr = str.toCharArray();
HashMap<Character, Integer> hm = new HashMap<Character, Integer>();
Iterator<Character> it = hm.keySet().iterator();
for(int i=0 ; i<arr.length;i++){
Integer value = hm.get(arr[i]);
int count = 1;
if(value!=null){
count = value+1;
}
hm.put(arr[i], count);
}
System.out.println(hm.toString());//第一个输出
while(it.hasNext()){ //为什么没有出来?
Character key = it.next();
System.out.println(key.toString()+":"+hm.get(key).toString());//第二个输出
}
}
目的是输出字母出现的次数,但是在下面我遍历的时候怎么都不能出结果,只有第一个输出了结果,第二个不出结果。
解答:将地址传递和值传递弄混淆了。HashMap<Character, Integer> hm = new HashMap<Character, Integer>(); Iterator<Character> it = hm.keySet().iterator();这里,hm 集合中还没有数据 所以 it 里面还没有数据 后面即是将 hm装入了数据,其it依然没有数据 可以将Iterator<Character> it = hm.keySet().iterator();放在 while(it.hasNext()){这句之前就行了。经大神指点,将代码精简完善了一下
	public static void main(String[] args { //"abcadfasdffdsa"输出对应字母和次数
	String str ="abcadfasdffdsa";
	HashMap<Object, Integer> hm = new HashMap<Object, Integer>()`;
	for(int i=0 ; i<str.length;i++){
		Integer value = hm.get(str.charAt(i));
		int count = 1;
		if(value!=null){
			count = value+1;
		}
		hm.put(str.charAt(i)), count);
	}
	System.out.println(hm.toString());
	for(String key : hm.keySet()) {
		System.out.println(key + ":"+hm.get(key));
	}
}
代码托管



上周考试错题总结
- 填空:”Hello”.substring( 0,2 )的值是“He”
- CH06填空:写出编译P165 RPG.java的命令(javac –d . *.java)
- CH06 判断:final可以用在类,方法,变量前。(OK)
- CH06填空:实现一个类中的equals()方法时,一定要同时实现(hashCode())方法
- CH07 填空:实现接口表示(拥有行为),但不是ISA关系。
- CH07 填空:用enum定义一个Season的类型表示四季(public enum Season{SPRING, SUMMER, AUTUMN,WINTER})。
- CH07 填空:面向对象中,设计经验可以用(设计模式)表达
结对及互评
与我结对的是20155322秦诗茂同学,相比于他的学习,我感到自己在一些繁琐的Java编程中显得水平不够,但是秦诗茂同学在编程方面功力扎实,这是值得我学习的地方,我也经常缠着他问东问西,以此来提高自己的编程水平,希望我们下周能练习更多的代码,共同进步。
评分标准
- 正确使用Markdown语法(加1分): - 不使用Markdown不加分
- 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
- 排版混乱的不加分
 
- 模板中的要素齐全(加1分) - 缺少“教材学习中的问题和解决过程”的不加分
- 缺少“代码调试中的问题和解决过程”的不加分
- 代码托管不能打开的不加分
- 缺少“结对及互评”的不能打开的不加分
- 缺少“上周考试错题总结”的不能加分
- 缺少“进度条”的不能加分
- 缺少“参考资料”的不能加分
 
- 教材学习中的问题和解决过程, 一个问题加1分 
- 代码调试中的问题和解决过程, 一个问题加1分 
- 本周有效代码超过300分行的(加2分) - 一周提交次数少于20次的不加分
 
- 其他加分: - 周五前发博客的加1分
- 感想,体会不假大空的加1分
- 排版精美的加一分
- 进度条中记录学习时间与改进情况的加1分
- 有动手写新代码的加1分
- 课后选择题有验证的加1分
- 代码Commit Message规范的加1分
- 错题学习深入的加1分
 
- 扣分: - 有抄袭的扣至0分
- 代码作弊的扣至0分
 
点评模板:
- 基于评分标准,我给本博客打分:XX分。得分情况如下:xxx
- 参考示例
点评过的同学博客和代码
http://www.cnblogs.com/blackay03/p/6624646.html
本周学习感悟
随着Java学习的深入,后面的知识越来越难越来越烦琐了,这就要求我们加大对自己的管理力度,严于律己,勤动手打代码,要做到一天多次提交代码,只有练习量跟上去了,学习才会变轻松,才能将知识学熟学透。另外,遇到不会的问题多动手百度,很多知识百度上面都有,另外,脚本之家和CSDN等网站上都对Java的学习内容和问题有详细的解答和概述,书看不懂了可以去网上,换一种方式理解。
学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 5000行 | 30篇 | 400小时 | |
| 第一周 | 20/20 | 2/2 | 20/20 | |
| 第二周 | 140/160 | 2/4 | 18/38 | |
| 第三周 | 113/273 | 1/5 | 20/58 | |
| 第四周 | 335/608 | 1/6 | 20/78 | |
| 第五周 | 1159/1767 | 1/7 | 30/108 | 
20155302 2016-2017-2《Java程序设计》第五周学习总结的更多相关文章
- 201521123025<java程序设计>第五周学习总结
		1. 本周学习总结 2. 书面作业 1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误.并分析输出结果. 1.2 ... 
- Java程序设计第五周学习总结
		1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 2. 书面作业 **代码阅读:Child压缩包内源代码 Child.java源代 ... 
- 20155302 2016-2017-2 《Java程序设计》第九周学习总结
		20155302 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 基本数据库操作相关的JDBC接口或类是位于java.sql包中.在程序中要取得数据库联机,我 ... 
- 20155227 2016-2017-2 《Java程序设计》第九周学习总结
		20155227 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是java联 ... 
- 20155328 2016-2017-2 《Java程序设计》第九周学习总结
		20155328 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 16.1 JDBC入门 JDBC是Java联机数据库的标准规范,定义一组标准类与接口,应用程 ... 
- 20155216 2016-2017-2 《Java程序设计》第九周学习总结
		20155216 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC架构 JDBC API的使用 JDBC连接数据库 1.导入JDBC包: 添加impo ... 
- 20155320 2016-2017-2《Java程序设计》第九周学习总结
		20155320 2016-2017-2<Java程序设计>第九周学习总结 教材学习内容总结 第十六章 JDBC简介 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 ... 
- 20145213《Java程序设计》第九周学习总结
		20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ... 
- 21045308刘昊阳 《Java程序设计》第九周学习总结
		21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ... 
- 20145236 《Java程序设计》第九周学习总结
		20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ... 
随机推荐
- 区块链Hyperledger Fabric 学习记录(一)开发环境搭建(ubuntu16.04/ubuntu18.04)
			目录 Fabric开发环境搭建 更新说明 教程环境及软件版本 Docker 安装Docker 配置用户组 配置Aliyun Docker加速器 安装docker-compose Go 下载源码 安装源 ... 
- Final阶段用户使用报告
			此作业要求参见:[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2477] 组名:可以低头,但没必要 组长:付佳 组员:张俊余 李文涛 孙 ... 
- 【Alpha】第九次Scrum meeting
			今日任务一览: 姓名 今日完成任务 所耗时间 刘乾 由于发现之前版本的模板引擎存在致命bug,所以重新更换,现在使用jinja2作为模板渲染引擎. 3 鲁聃 卤蛋今天为了给编译老师做视频,没有做软工项 ... 
- Objective-C 语言特点/特性
			Objective-C中 1.所有的类都必须继承自NSObject. 2.所有对象都是指针的形式. 3.用self代替this. 4.使用id代替void*. 5.使用nil表示NULL, 6.只支持 ... 
- Photoshop一些常用的快捷键
			1.按住Alt键,点击图层上的小眼睛,只显示当前图层 2.新建纯色图层,抠图 3.Fn+ num 调整不透明度 4.Shift + num 调整流量 5.调整图层透明度,在移动工具状态下,输入数字:0 ... 
- Java之Set的使用场景
			2.Set使用场景 API介绍: java.util.Set接口和java.util.List接口一样,同样继承自Collection接口, 它与Collection接口中的方法基本一致,并没有对Co ... 
- BZOJ2423 HAOI2010最长公共子序列(动态规划)
			大讨论.注意去重. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib& ... 
- tomcat Failed creating java C:\Program Files\Java\jre6\bin\client\jvm.dll %1 不是有效的 Win32 应用程序。
			jdk版本搞的鬼 请下载64位的jdkj进行安装 
- MySQL服务器最大连接数的合理设置
			MySQL服务器的连接数并不是要达到最大的100%为好,还是要具体问题具体分析,下面就对MySQL服务器最大连接数的合理设置进行了详尽的分析,供您参考. 我们经常会遇见“MySQL: ERROR 10 ... 
- 【BZOJ1487】[HNOI2009]无归岛(动态规划)
			[BZOJ1487][HNOI2009]无归岛(动态规划) 题面 BZOJ 洛谷 题解 哪来的这么多废话啊,直接说一个仙人掌得了. 然后就是要你求仙人掌最大独立集了.(随便蒯份原来的代码就过了) 不过 ... 
