20145223《Java程序设计》第5周学习总结
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周学习总结的更多相关文章
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 《Java程序设计》第二周学习总结
20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...
随机推荐
- IOS-Gesture(手势识别)
手势识别——Gesture Recognizer •iOS3.2版本之后,苹果推出了手势识别(Gesture Recognizer),其目的是: –简化开发者的开发难度 –统一用户体验 • •iOS目 ...
- 公共数据访问对象接口CommDao
package org.guangsoft.dao; import java.util.List; import java.util.Set; /** * 公共DAO功能 * @param <K ...
- iOS获取状态栏和导航栏尺寸(宽度和高度)
iPhone开发当中,有时需要获取状态栏和导航栏高度.宽度信息,方便布局其他控件.下面介绍一下如何获取这些信息: // 状态栏(statusbar) CGRect rectStatus = [[UIA ...
- NYOJ题目1082买新书了
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAsoAAAI5CAIAAAA38ougAAAgAElEQVR4nO3dPVLjStsG4G8T5CyE2A
- Clr Via C#读书笔记---线程基础
趣闻:我是一个线程:http://kb.cnblogs.com/page/542462/ 进程与线程 进程:应用程序的一个实例使用的资源的集合.每个进程都被赋予了一个虚拟地址空间. 线程:对CPU进行 ...
- tomcat7源码编译过程以及问题解决
http://blog.csdn.net/kaoshangqinghua/article/details/40022315
- ***CI的CLI运行方式
linux下的执行命令: 1.PHP解释器 2.CI根目录的index.php 3.控制器所在的文件夹 4. 控制器名称 5. 方法名称 (参数) 参考文献: http://codeigni ...
- 设计模式学习之观察者模式(Observer,行为型模式)(7)
1.观察者模式又叫做发布-订阅模式. 2.观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己. 3 ...
- Newtonsoft.Json(Json.Net)学习笔记(转)
概述 Newtonsoft.Json,一款.NET中开源的Json序列化和反序列化类库,通过Nuget获取.(查看原文) 下面是Json序列化和反序列化的简单封装: /// <summary&g ...
- HDU4495 Rectangle
求组成的等腰三角形面积最大值. 对此题的总结:暴力出奇迹 组成的三角形放置方式一共只有4种,用ans表示目前已知的最长三角形的边长,从上到下,从左到右枚举顶点,再枚举边长,一个重要剪枝是枚举边长l时先 ...