20145223 《Java程序设计》第5周学习总结

教材学习内容总结

·由于在编程的时候会遇到因各种原因而导致的错误,于是我们可以使用"try"、"catch"组成的语法捕捉错误:

    try {
…………
}
catch(ArrayIndexOutOfBoundsException ex) {
…………
}

·在执行try区域中的语句如果发生错误,执行程序就会跳过有错的地方并将错误与catch括号中声明的类型比较,如果符合则执行接下来catch{……}中的语句。

·错误会被包装成对象,都继承自java.lang.Throwable类,两个子类java.lang.Error和java.lang.Exception在使用上有所不同。Error与其子类表示严重系统错误,基本上出现的这种错误不用处理。而Exception和其子类表示的是程序设计上本身的错误。

·如果某个方法声明抛出Throwable或子类实例,只要不是属于Error或者java.lang.RuntimeException及子类实例,就需要使用try/catch语法进行处理。

·在使用try/catch语法捕捉错误时,如果父类异常对象在子类异常对象前被捕捉,则catch子类异常对象的区块将不会被执行。也就是当我们想要完成程序的编译时,我们必须更改程序中对异常对象捕捉的顺序。

        try {
throw new ArithmeticException("例外测試");
}
catch(Exceptione) {
System.out.println(e.toString());
}
catch(ArithmeticException e) {
System.out.println(e.toString());
}

更改后为:

        try {
throw new ArithmeticException("例外测試");
}
catch(ArithmeticException e) {
System.out.println(e.toString());
}
catch(Exception e) {
System.out.println(e.toString());
}

·如果出现几个catch区块在做同样的事,例如:

        try{
XXX
}catch(IOException e)
{
同样的事;
}catch(InterruptedException e)
{
同样的事;
}catch(ClassCastException e)
{
同样的事;
}……

可以使用多重语法使程序简化:(注意:catch括号中列出的异常不得有继承关系!)


try{
XXX
}catch(IOException|InterrupedException |ClassCastException e)
{
同样的事;
}

·如果操作对象的过程中抛出受检异常但是当前环境信息不足以处理异常,即无法使用try/catch语法,可由方法的客户端依据当时调用的环境信息进行处理,所以这时候我们要用throws声明此方法会抛出的异常类型或父类型。比如:

        try {
double data = 100 / 0.0;
System.out.println("浮点数零除:" + data);
if(String.valueOf(data).equals("Infinity"))
throw new ArithmeticException("除零例外");
}
catch(ArithmeticException e) {
System.out.println(e);
}

·在catch区块进行错误处理后可用throw将异常再抛出。

·如果想得知异常发生的根源可以利用异常对象自动收集的堆栈追踪:

1、最简单的方法就是直接调用异常对象的printStackTrace()方法。

2、如果想得取得个别堆栈追踪元素进行处理,使用getStackTrace()方法。

3、如果想要让异常堆栈起点为重抛异常的地方,使用fillInstackTrace()方法

·Finally区块:无论try区块中是否有异常,只要撰写了finally区块,则该区块一定会被执行。如果在程序撰写的流程中出现了return,则先执行finally区块内容,再将结果所取得的值通过return返回。

·收集对象的行为(比如add()方法、remove()方法,都是定义在java.util.Collection中。对对象进行操作的行为,就是java.lang.Iterable定义的行为。

`如果希望收集时记录每个对象的索引顺序,并且取回对象,这样的行为定义在java.lang.List中

(1)如果希望手机的对象不重复,具有集合的行为,则由java.util.Set定义。

(2)如果希望收集对象时以队列方式,收集的对象加入至尾端,取得对象时从前端开始,则由java.util.Queue定义。

(3)如果希望对Queue的两端进行加入或移除操作,则使用java.util.Deque。

·List可以使用数组(Array)或是链结串行(LinkedList)来实作这个特性。对于循序加入与存取,使用ArrayList的效率比较好。对于经常变动元素排列顺序的需求,使用LinkedList会比较好

·ArrayList实例:

        Scanner scanner = new Scanner(System.in);

        List<String> list = new ArrayList<String>();

        System.out.println("输入名称(使用quit结束)");
while(true) {
System.out.print("# ");
String input = scanner.next();
if(input.equals("quit"))
break;
list.add(input);
} System.out.print("显示输入: ");
for(int i = 0; i < list.size(); i++)
System.out.print(list.get(i) + " ");
System.out.println();

·无论List 、Set还是Queue,都有iterator()方法。在JDK5以后,增强式for循环语句可用在数组上,也可用在Interable接口的对象上——编译程序蜜糖:

 for(String s : list) {
System.out.print(s + " ");
}//使用foreach来遍访List中的元素

·利用java.util.Map接口的操作对象来建立键值对应数据,之后可以用键迅速取得值。

·判断键是否重复是根据hashCode()和equals(),作为键的对象必须操作这两个方法。

·HashMap的使用举例:

        Map<String, String> map =
new HashMap<String, String>();
String key1 = "caterpillar";
String key2 = "justin";
map.put(key1, "caterpillar的讯息");
map.put(key2, "justin的讯息"); System.out.println(map.get(key1));
System.out.println(map.get(key2));

·取得Map中所有的值,可以用values()返回Collection对象。取得Map的键与值可以用entrySet()方法,调用getKey()取得键,调用getValue()取得值。

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

书上在介绍try/catch的使用方法的时候举了几个例子,但是当我把代码敲到程序中时出现了错误:

仔细检查之后我发现在程序一开始的地方我添加的import只有import java.util.Scanner;但是如果想要运行catch后括号内的内容,必须要再添加一个关于InputMismatchException的import,也就是说改为:

import java.util.InputMismatchException;
import java.util.Scanner;

(ps:书上后面举得例子中所用的方法则是直接添加了java.util.*)

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

这两章书上的代码很多很长,如果只是机械地敲代码运行程序,那么学习效率也不高,并且也学不到什么东西。还不如用敲代码的时间多琢磨琢磨书上的代码到底是什么意思。盲目地去将书上的代码都试一遍不是学习的关键,重点在于你要弄懂代码里所运用了哪些知识点,慢慢累积起来,才能获得收获。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 4000行 20篇 400小时
第一周 200/200 1/1 15/12
第二周 180/380 1/1 18/12
第三周 600/980 1/1 17/16
第四周 400/1380 1/1 16/15
第五周 300/1680 1/1 14/14

代码托管截图

参考资料

20145223《Java程序设计》第5周学习总结的更多相关文章

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

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

  2. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  3. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

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

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

  5. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  6. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  7. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  8. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

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

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

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

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

随机推荐

  1. 【XLL 文档翻译】【第3部分】必要的和有用的 C API XLM 函数

    本节中将介绍几个对于 DLL 和 XLL 开发人员来说十分重要的回调函数,xlfRegister 函数是可用于注册函数,使得 Excel 可以直接访问 DLL 和 XLl 中的函数. xlfUnreg ...

  2. JS 保留两位小数问题收集

    1.使用四舍五入的方法,保留小数点后的两位小数: toFixed里面的参数表示保留的小数的位数,范围是0-20,超过20位就会报错了 <script> var num=22.127456; ...

  3. HTML标记语法之图片Img元素

    语法:<img src=”xxx.jpg”alt=”xxx”title=”xxx”> 属性可取值如下: 属性名称 属性值 说明 src URL 图片路径 alt 文本 图片无法显示时的文本 ...

  4. weblogic无需用户名密码启动Server

    创建了Server-0. 但每次启动需要手工输入管理账户和密码. 并不方便. 现在要让它自动输入并启动.一. 新建security文件夹 # cd $WEBLOGIC_HOME/servers/Ser ...

  5. shell之数值运算

    Shell中声明变量默认是字符串, 要参与数值运算,可使用下面方式,简单,表示以数值方式.

  6. UVA 10192 Vacation

    裸最长公共子序列 #include<time.h> #include <cstdio> #include <iostream> #include<algori ...

  7. 网站通用登录模块代码 分类: ASP.NET 2014-12-06 10:49 615人阅读 评论(0) 收藏

    1.HTML部分:     <form id="form1" runat="server">     <script src=".. ...

  8. C# SMTP邮件发送 分类: C# 2014-07-13 19:10 333人阅读 评论(1) 收藏

    邮件发送在网站应用程序中经常会用到,包括您现在看到的博客,在添加评论后,系统会自动发送邮件通知到我邮箱的,把系统发送邮件的功能整理了下,做了一个客户端Demo,希望对有需要的童鞋有所帮助: 核心代码: ...

  9. CodeIgniter类的使用

    Email 类 在配置文件中设置 Email 参数 如果您不想使用使用上述方法设定参数,您可以把它们放入一个配置文件.创建一个新文件称为email.php ,添加$config数组在该文件中.然后将该 ...

  10. 使用AStyle进行代码格式化

    转自:http://www.cnblogs.com/JerryTian/archive/2012/09/20/AStyle.html 在日常的编码当中,大家经常要遵照一些设计规范,如命名规则.代码格式 ...