20155317 王新玮 2016-2017-2 《Java程序设计》第5周学习总结

教材学习内容总结

异常处理 & Collection与Map 异常继承架构

  • 错误的对象继承java.lang.Throwable类,Throwable有两个子类Java.lang.Error与java.lang.Exceptions.
  1. a.Erroe与其子类实例表示严重系统错误。
  2. b.Exception与其子类实例是异常处理。
  • 必须明确使用try,catch语法加以处理,或者用throw声明这个方法会抛出异常,否则会编译失败。
  • 受检异常:一定要处理Exception,但不属于RuntimeException.
  • 非受检异常:程序不强迫处理。RuntimeException是客户端引发的,属于客户端有关修改的内容,如果一定要处理,建议是呈现友好信息。
  1. 注:如果父类异常对象在子类异常对象前被捕捉,则catch子类异常对象区块将永远不会被执行。故先捕捉子类。

try、catch语法

  • 在使用相关程序时会有许多错误,例如下列代码 这里尝试使用try、catch语法,发现JVM会尝试执行try区块中的程序代码,如果发生错误,就会跳离错误发生点比较catch括号中声明的类型,若符合被抛出错误对象类型。 try、catch语法可以捕捉try部分的异常:
  • 无try、catch语法时,出现异常的时候程序就会报错。
  • 使用try、catch语法时,出现异常时,程序可仍以正常运行,只是把错误信息存储到Exception里。
  • 即catch功能为提取异常信息。

throw & throws

  • 方法设计流程出现异常时,可以用throws FileNotFoundException抛出异常,通过调用方法的客户端来处理。

Collection和Map架构

Collection

  • java.util.List接口中,记录每个对象的索引顺序,依照索引取回对象。
  • java.util.Set接口中,收集对象不重复,并具有集合的行为。
  • java.util.Queue接口中,收集对象时以队列方式,收集的对象加入尾端,取得对象时从前端。
  • java.util.Deque接口中,对Queue 的两端进行加入、移除等操作。

Map

  • 即是以键值对形式的存放数据的容器,主要以哈希Map作为其常用的实现类。Lambada和泛型

Lambada

  • 该表达式主要功能为:简化匿名函数的写法,减轻程序员负担。

泛型

  • 使用Collection收集对象时,由于收集对象的形态未知,因此内部操作时,都是使用object来参考被收集的对象,取回对象时也是以object类型返回。
  • 故若想针对某类定义的行为操作,必须告诉编译程序,让对象重新扮演该类型。JDK5之后增加了泛型语法。若接口支持泛型,在操作时也会比较方便,只要声明参考时有指定类型,那么创建对象时就不用再写类型了。
  • 泛型也可以仅定义在方法上,最常见的是在静态方法上定义泛型。

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

  • 学习8.1.1时,看到try、catch捕捉错误的案例,书中只捕捉了一个错误,如果有多个错误该如何捕捉?

  • 解决:学习到8.1.2时看到书中片段
try{
事情...
}catch(IOException | InterruptedException | ClassCastException e) {
e.printStackTrace();
}
  • 本周把第三章的课后操作题给编了一下,而且都能比较顺利地编出来,编写过程中遇到的一些错误也能自己发现并纠正。
  • import java.util.Scanner;
    
    public class Fibonacci {
    public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int x = ;
    int[] Fi = new int[];
    Fi[] = ; Fi[] = ;
    System.out.println("求几个费式数?(50以内)");
    int num = scanner.nextInt();
    if (num >= ) {
    for (int j = ; j < num; j++){
    Fi[j] = Fi[j - ] + Fi[j - ];
    }
    }
    for (int i = ; i < num; i++){
    System.out.printf("%3d;",Fi[i]);x++;
    if (x == ){
    System.out.println();
    x = ;
    } }
    }
    }

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

  • public Test() throws RepletException {
    try {
    System.out.println("Test this Project!")
    }
    catch (Exception e) {
    throw new Exception(e.toString());
    }
    }
  • 问题:throw和throws的区别有什么啊?这里改成throw可以吗?
  1. 经过上网搜查后我发现:
  2. throws是用来声明一个方法可能抛出的所有异常信息,而throw则是指抛出的一个具体的异常类型。通常在一个方法(类)的声明处通过throws声明方法(类)可能抛出的异常信息,而在方法(类)内部通过throw声明一个具体的异常信息。throws通常不用显示的捕获异常,可由系统自动将所有捕获的异常信息抛给上级方法。throw则需要用户自己捕获相关的异常,而后在对其进行相关包装,最后在将包装后的异常信息抛出。
  • 问题2:第八章的学习是异常处理,就是我们平时编程过程中会出现的小问题都有了详细的解答。通过本章的学习我知道了使用try、catch语法,JVM会尝试tyr中的代码如果错误便能跳过错误点,比对catch中声明的类型。并且还了解了很多模块问题出现问题所提示的结果显示,以后的编程中可能会有各种各样的问题,但通过本章的学习了解到了很多问题出现的原因,下次编程若出现,便可以很快地检查对应区域代码,收获颇多。

代码托管

上周考试错题总结

  • 判断:Java中所有的对象都有equals()方法。(OK)
  • 实现一个类中的equals()方法时,一定要同时实现(hashCode())方法
  • 面向对象中,设计经验可以用(设计模式)表达
  • 判断:final可以用在类,方法,变量前。(OK)
  • Math中的abs()方法可以Override.(X)
  • 判断:接口中 int STOP等价于public static final int STOP. (ok)
  • 填空:实现接口表示(拥有行为),但不是ISA关系。
  • 判断:Math中的abs()方法可以Override.(X)

点评过的同学博客和代码

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

这周又接触到了没接触过的新知识、新概念。不过凡事都讲究个基本功,感觉要是前面这些的基础知识学的不透彻不理解,后面就更别说了,肯定越来越难,好好学!

学习进度条

  代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时  
第一周 200/200 2/2 20/20  
第二周 300/500 2/4 18/38  
第三周 500/1000 3/7 22/60  
第四周 300/1300 2/9 22/90  
第五周 486/1300 2/9 21/90

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。 耗时估计的公式 :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

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

  • 计划学习时间:XX小时

  • 实际学习时间:XX小时

  • 改进情况:

(有空多看看现代软件工程 课件 软件工程师能力自我评价表)

参考资料

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

  1. C语言与java 20155317 王新玮第二次

    20155317 王新玮第二次写作感想   你有什么技能比大多数人(超过90%以上)更好? 刚刚看到这个题目,我的首先想到的是会一些中医,懂得中医的理论框架知识,懂得大部分的中医脉象,能够解决日常生活 ...

  2. 20155317 王新玮 2016-2017-2 《Java程序设计》第6周学习总结

    20155317 王新玮 2016-2017-2 <Java程序设计>第6周学习总结 教材学习内容总结 10.1.1串流设计的概念 Java将输入/输出抽象化为串流,数据有来源及目的地,衔 ...

  3. 20155317 王新玮 2016-2017-2 《Java程序设计》第9周学习总结

    20155317 王新玮 2016-2017-2 <Java程序设计>第9周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以 ...

  4. 20155317 王新玮 2006-2007-2 《Java程序设计》第4周学习总结

    20155317 王新玮 2006-2007-2 <Java程序设计>第4周学习总结 教材学习内容总结 第六章 继承共同行为 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那 ...

  5. 20155317王新玮 2006-2007-2 《Java程序设计》第3学习总结

    20155317王新玮 2006-2007-2 <Java程序设计>第3周学习总结 教材学习内容总结 第四章 chothes(String coler,char size)的含义是对col ...

  6. 20155317王新玮《网络对抗技术》实验9 web安全基础实践

    20155317王新玮<网络对抗技术>实验9 web安全基础实践 一.实验准备 1.0 实验目标和内容 Web前端HTML.能正常安装.启停Apache.理解HTML,理解表单,理解GET ...

  7. 20155317王新玮《网络对抗技术》实验8 WEB基础实践

    20155317王新玮<网络对抗技术>实验8 WEB基础实践 一.实验准备 1.0 实验目标和内容 Web前端HTML.能正常安装.启停Apache.理解HTML,理解表单,理解GET与P ...

  8. 20155317 王新玮《网络对抗技术》实验5 MSF基础应用

    20155317 王新玮<网络对抗技术>实验5 MSF基础应用 1. MS08_067安全漏洞 原理:攻击者利用受害者主机默认开放的SMB服务端口445,发送特殊RPC请求,通过MSRPC ...

  9. 20155317王新玮《网络对抗》Exp2 后门原理与实践

    20155317王新玮<网络对抗>Exp2 后门原理与实践 一.实验内容 (1)使用netcat获取主机操作Shell,cron启动 (2)使用socat获取主机操作Shell, 任务计划 ...

随机推荐

  1. Java 运算符(引用和对象)

    1. 算数运算符 就是+.-.*./.%.++.--这些,没什么好说的,稍微强调下自加,自减: 前缀自增自减法(++i,--i): 先进行自增或者自减运算,再进行表达式运算. 后缀自增自减法(i++, ...

  2. 【[LNOI2014]LCA】

    这题好神啊 能够\(1A\)真是不可思议 首先看到要求的这个柿子\(\sum_{i=l}^{r}deep[LCA(i,z)]\),而且\(l\)和\(r\)并不是来自与一棵子树或者一条链,而是编号连续 ...

  3. HTTPS科普扫盲

    为什么需要HTTPS HTTP是明文传输的,也就意味着,介于发送端.接收端中间的任意节点都可以知道你们传输的内容是什么.这些节点可能是路由器.代理等. 举个最常见的例子,用户登陆.用户输入账号,密码, ...

  4. 【Git】常见错误提示解决办法和常用方法

    1.添加远程仓库时提示fatal: remote origin already exists. 先删除远程仓库,再添加远程仓库 最后再push 2.修改本地文件(比如README.md)后,更新到gi ...

  5. 基于Azure Blob冷存储的数据压缩算法测试对比分析

    背景说明: 近期公司的数据增量迅速增长,存储的成本太高,需要采用生命周期进行管理,热存储中的数据或者被删除,或者备份至冷存储.但是冷备时是否要压缩,需要进行验证.Azure本身没有提供压缩的接口,只能 ...

  6. valgrind massif内存分析[转]

    valgrind检查内存泄露 #valgrind   ./程序 内存泄漏问题,我们有memcheck工具来检查.很爽.但是有时候memcheck工具查了没泄漏,程序一跑,内存还是狂飙.这又是什么问题. ...

  7. selenium断言的分类

    操作(action).辅助(accessors)和断言(assertion): 操作action: 模拟用户与 Web 应用程序的交互. 辅助accessors: 这是辅助工具.用于检查应用程序的状态 ...

  8. ext4文件系统特性浅析

    ext4作为Linux下的文件系统因其简单性.易管理性.兼容性强等特定,深受大多数用户喜欢,并且作为大多数Linux发行版中的默认文件系统.但是随着现在文件数目的增多以及文件数据的增大,ext4文件系 ...

  9. 使用supervior 监控 elasticsearch 进程

    elasticsearch引擎在使用中可能会出现后台守护进程挂掉的情况,需要手动启动来恢复正常. 这时则可以引用supervior进程管理工具来监控elasticsearch进程状态,实现进程挂掉自动 ...

  10. 【原创】如何使用Jmockit进行单元测试

    如何使用jmockit进行单元测试 1. Jmockit简介 JMockit 是用以帮助开发人员编写测试程序的一组工具和API,它完全基于 Java 5 SE 的 java.lang.instrume ...