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));
}
}

代码托管





上周考试错题总结

  1. 填空:”Hello”.substring( 0,2 )的值是“He”
  2. CH06填空:写出编译P165 RPG.java的命令(javac –d . *.java)
  3. CH06 判断:final可以用在类,方法,变量前。(OK)
  4. CH06填空:实现一个类中的equals()方法时,一定要同时实现(hashCode())方法
  5. CH07 填空:实现接口表示(拥有行为),但不是ISA关系。
  6. CH07 填空:用enum定义一个Season的类型表示四季(public enum Season{SPRING, SUMMER, AUTUMN,WINTER})。
  7. CH07 填空:面向对象中,设计经验可以用(设计模式)表达

结对及互评

与我结对的是20155322秦诗茂同学,相比于他的学习,我感到自己在一些繁琐的Java编程中显得水平不够,但是秦诗茂同学在编程方面功力扎实,这是值得我学习的地方,我也经常缠着他问东问西,以此来提高自己的编程水平,希望我们下周能练习更多的代码,共同进步。

评分标准

  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分

点评模板:

  • 基于评分标准,我给本博客打分: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程序设计》第五周学习总结的更多相关文章

  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. 20155302 2016-2017-2 《Java程序设计》第九周学习总结

    20155302 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 基本数据库操作相关的JDBC接口或类是位于java.sql包中.在程序中要取得数据库联机,我 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

    20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...

随机推荐

  1. 区块链Hyperledger Fabric 学习记录(一)开发环境搭建(ubuntu16.04/ubuntu18.04)

    目录 Fabric开发环境搭建 更新说明 教程环境及软件版本 Docker 安装Docker 配置用户组 配置Aliyun Docker加速器 安装docker-compose Go 下载源码 安装源 ...

  2. Final阶段用户使用报告

    此作业要求参见:[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2477] 组名:可以低头,但没必要 组长:付佳 组员:张俊余 李文涛 孙 ...

  3. 【Alpha】第九次Scrum meeting

    今日任务一览: 姓名 今日完成任务 所耗时间 刘乾 由于发现之前版本的模板引擎存在致命bug,所以重新更换,现在使用jinja2作为模板渲染引擎. 3 鲁聃 卤蛋今天为了给编译老师做视频,没有做软工项 ...

  4. Objective-C 语言特点/特性

    Objective-C中 1.所有的类都必须继承自NSObject. 2.所有对象都是指针的形式. 3.用self代替this. 4.使用id代替void*. 5.使用nil表示NULL, 6.只支持 ...

  5. Photoshop一些常用的快捷键

    1.按住Alt键,点击图层上的小眼睛,只显示当前图层 2.新建纯色图层,抠图 3.Fn+ num 调整不透明度 4.Shift + num 调整流量 5.调整图层透明度,在移动工具状态下,输入数字:0 ...

  6. Java之Set的使用场景

    2.Set使用场景 API介绍: java.util.Set接口和java.util.List接口一样,同样继承自Collection接口, 它与Collection接口中的方法基本一致,并没有对Co ...

  7. BZOJ2423 HAOI2010最长公共子序列(动态规划)

    大讨论.注意去重. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib& ...

  8. tomcat Failed creating java C:\Program Files\Java\jre6\bin\client\jvm.dll %1 不是有效的 Win32 应用程序。

    jdk版本搞的鬼 请下载64位的jdkj进行安装

  9. MySQL服务器最大连接数的合理设置

    MySQL服务器的连接数并不是要达到最大的100%为好,还是要具体问题具体分析,下面就对MySQL服务器最大连接数的合理设置进行了详尽的分析,供您参考. 我们经常会遇见“MySQL: ERROR 10 ...

  10. 【BZOJ1487】[HNOI2009]无归岛(动态规划)

    [BZOJ1487][HNOI2009]无归岛(动态规划) 题面 BZOJ 洛谷 题解 哪来的这么多废话啊,直接说一个仙人掌得了. 然后就是要你求仙人掌最大独立集了.(随便蒯份原来的代码就过了) 不过 ...