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. Teaching Machines to Understand Us 让机器理解我们 之二 深度学习的历史

    Deep history 深度学习的历史 The roots of deep learning reach back further than LeCun’s time at Bell Labs. H ...

  2. PAT甲题题解-1122. Hamiltonian Cycle (25)-判断路径是否是哈密顿回路

    博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789799.html特别不喜欢那些随便转载别人的原创文章又不给 ...

  3. Linux内核设计与实现 第一章 第二章

    第一章 Linux内核简介 Unix特点: (1)     Unix很简洁,仅仅提供几个几百个系统调用并且有一个非常明确的设计目的 (2)     在Unix中,所有的东西都被当作文件对待,通过一套相 ...

  4. 《Linux内核--分析Linux内核创建一个新进程的过程 》 20135311傅冬菁

    20135311傅冬菁 分析Linux内核创建一个新进程的过程 一.学习内容 进程控制块——PCB  task_struct数据结构 PCB task_struct中包含: 进程状态.进程打开的文件. ...

  5. python scipy stats学习笔记

    from scipy.stats import chi2 # 卡方分布from scipy.stats import norm # 正态分布from scipy.stats import t # t分 ...

  6. 如何用Qt自动拷贝exe依赖的dll

    QT生成的.exe文件不能运行的解决办法 之前的数独项目的GUI,当我的Qt项目生成exe时,由于缺少了相关的依赖dll文件,打开会一直报缺少依赖文件的错: 然后一开始我到安装的Qt文件夹里把这些有Q ...

  7. php redis 的基本操作

    前言: 断断续续的接触了redis的使用.但是也就简单的记住了几个set.get方法,用的还是太少了吧.所以来做个笔记,记录下一些常用的命令. 内容: 首先是php连接redis. $redis = ...

  8. Docker(二)-Docker安装

    官方文档:https://docs.docker.com/ Docker 支持多平台的安装(Linux/Windows/OS X). 因为Docker原生支持Linux,所以,可以直接在Linux上运 ...

  9. 极简版 卸载 home 扩充 根分区--centos7 xfs 文件格式

    1. 查看文件系统 df -Th 2. 关闭正常连接 /home的用户 fuser /home 3. 卸载 /home的挂载点 umount /home 4.删除home的lv 注意 lv的名称的写法 ...

  10. IIS 下 搭建简单的FTP服务器

    1. 修改用户策略, 创建简单用户密码 命令行输入 gpedit.msc 打开组策略 位置 2. 创建一个FTP使用的用户 net user zhaobsh Test6530 /add 3. 安装II ...