20145304 第五周Java学习报告
2016-04-02 08:52
501 查看
20145304《Java程序设计》第5周学习总结
教材学习内容总结
1.使用try、catch:
如果使用了try、catch,编译时会尝试执行try区块中的程序代码,如果有错误,执行流程会跳离错误发生点,然后比较catch括号中声明的类型,是否符合被抛出的错误对象类型,如果是的话,就执行catch区块中的程序代码。代码如下:
package cc.openhome; import java.util.*; public class Average { public static void main(String[] args) { Scanner console=new Scanner (System.in); double sum=0; int count=0; while (true){ try{ int number=console.nextInt(); if(number==0){ break; } sum+=number; count++; }catch(InputMismatchException ex){ System.out.printf("略过非整数输入:%s%n",console.next()); } } System.out.printf("平均 %.2f%n",sum/count); } }
结果截图:
2.继承异常架构:
错误会被包装成对象,都可抛出。设计对象都继承自java.lang.Throwable类。
Throwable定义了取得错误信息、堆栈追踪等方法,它有两个子类:java.lang.Error和java.lang.Exception。
String的matches()方法中设定了“\d*”,这是规则表达式,表示检查字符串中的字符是不是数字,若是则matches()会返回true。
任何流程中都可以使用throw将异常抛出。
如果抛出的是受检异常,表示你认为客户端有能力且应处理异常,此时必须在方法上使用throws声明。
堆栈追踪最简单的方法,就是直接调用异常对象的printStackTrace()。
想让异常堆栈起点为重抛异常的地方,可以使用fillInStackTrace()方法,这个方法会重新装填异常堆栈,将起点设为重抛异常的地方,并返回Throwable对象。
代码如下:
package cc.openhome; public class StackTrace { public static void main(String[] args) { try{ c(); }catch(NullPointerException ex){ ex.printStackTrace(); } } static void c(){ try{ b(); }catch(NullPointerException ex){ ex.printStackTrace(); Throwable t=ex.fillInStackTrace(); throw(NullPointerException)t; } } static void b(){ a(); } static String a(){ String text=null; return text.toUpperCase(); } }
结果截图:
3.assert和finally:
assert的两种语法:assert boolean_expression;assert boolean_expression:detail_expression;finally区块一定会被执行。
如果程序撰写的流程中先return了,而且也有finally区块,finally区块会先执行完后,在将值返回。
代码如下:
package cc.openhome; import static java.lang.System.out; public class Auto { public static void main(String[] args) { try(ResourceSome some=new ResourceSome(); ResourceOther other=new ResourceOther()){ some.doSome(); other.doOther(); }catch(Exception ex){ ex.printStackTrace(); } } } class ResourceSome implements AutoCloseable { void doSome() { out.println("做一些事"); } @Override public void close() throws Exception { out.println("资源Some被关闭"); } } class ResourceOther implements AutoCloseable{ void doOther(){ out.println("做其他事"); } @Override public void close() throws Exception{ out.println("资源Other被关闭"); } }
结果截图:
4.使用Collection收集对象:
收集时记录每个对象的索引顺序,并可依索引取回对象,这样的行为定义在java.util.List接口中。收集的对象不重复,具有集合的行为,则由java.util.Set定义。
收集对象时以队列方式,收集的对象加入至尾端,取得对象时从前端,则可使用java.util. Queue。
希望对Quece的两端进行加入、移除等操作,则可使用java.util.Deque。
5.Map:
在HashMap中建立键值对应之后,键是无序的。TreeMap建立键值对应,则键的部分将会排序,条件是作为键的对象必须操作Coomparable接口,或是在创建TreeMap时指定操作Comparator接口的对象。
一般常用Properties的setProperty()指定字符串类型的键值,getProperty()指定字符串类型的键,取回字符串类型的值,通常称为属性名称与属性值。
如果想取得Map中所有键,可以调用Map的keySet()返回Set对象,如果想取得Map中所有的值,则可以使用values()返回Collection对象。如果想同时取得Map的键与值,可以使用entrySet()方法,这会返回一个set对象,每个元素都是Map.Entry实例,可以调用getKey()取得键,调用getValue()取得值。
代码托管情况:
教材学习中的问题和解决过程
对于书上有些方法不太熟悉,用时不知其语法或不知其意义,总得翻书查找。代码调试中的问题和解决过程
再敲写代码时,因不小心,将“(”看作是“}”,无法编译成功,检查了很多遍都没有看出问题,以后应注意不要再犯类似问题。没有仔细理解代码,出现如下错误:
其他(感悟、思考等,可选)
这星期看书时间较为紧张,很多地方只是读过,却印象不深,对于try、catch什么时候用并没有搞清楚,是要在出现错误查找错误时使用?还是在编写代码时直接使用,避免出现错误而无法运行。对异常的处理是出现异常时处理还是要预防处理。学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 15篇 | 400小时 | |
第五周 | 200/710 | 1/6 | 30/120 |
参考资料
Java学习笔记(第8版)《Java学习笔记(第8版)》学习指导
相关文章推荐
- 一天一个Java基础——反射
- CoreJava_线程并发(堵塞队列):在某个目录下搜索含有某keyword的文件
- java 继承中构造方法和类成员方法间的关系
- Spring 注解
- Eclipse编写ExtJS卡死问题 eclise js验证取消
- Eclipse编写ExtJS卡死问题 eclise js验证取消
- 深入理解Java注解——注解处理器
- Java反射入门
- spring aop表达式详解
- Java 环境变量参数
- java中关于线程的知识
- Spring Boot 修改代码无需重新启动应用
- Atitit.eclipse git使用
- Atitit.eclipse git使用
- Atitit.eclipse git使用
- <Thinking In Java> 读书笔记
- Java集合类之Hashtable
- 10.JAVA编程思想——对象容纳
- Struts为所有包配置拦截器
- 9.JAVA编程思想 多形性