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

参考资料

20145304 第五周Java学习报告的更多相关文章

  1. 第五周Java学习总结(补)

    第五周java学习内容(补) 学习内容: File类方法的操作 public String getName() public boolean canRead() public boolean canW ...

  2. 第五周java学习总结

    学号 20175206<Java程序设计>第五周学习总结 教材学习内容总结 6.1 接口 为了克服Java单继承的缺点,Java使用了接口,一个类可以实现多个接口. 使用关键字interf ...

  3. 20145307第9周JAVA学习报告

    20145307陈俊达 <Java程序设计>第9周学习总结 教材学习内容总结 JDBC(Java DataBase Connectivity)即java数据库连接,是一种用于执行SQL语句 ...

  4. 20145307第八周JAVA学习报告

    20145307<Java程序设计>第8周学习总结 教材学习内容总结 通用API 日志API 1.java.util.logging包提供了日志功能相关类与接口,使用日志的起点是logge ...

  5. 20145307第七周JAVA学习报告

    20145307<Java程序设计>第七周学习总结 教材学习内容总结 Lambda Lambda语法概述: Arrays的sort()方法可以用来排序,在使用sort()时,需要操作jav ...

  6. 20145307第十周JAVA学习报告

    教材学习内容总结 Java的网络编程 1.计算机网络概述 (1)路由器和交换机组成了核心的计算机网络,计算机只是这个网络上的节点以及控制等,通过光纤.网线等连接将设备连接起来,从而形成了一张巨大的计算 ...

  7. 20165319第五周java学习笔记

    教材内容总结 1.String类和StringBuffer类都覆盖了toString方法,都是返回字符串. 所以带不带toString效果是一样的. 2.instanceOf运算符可以用来判断某个对象 ...

  8. 第五周总结&实验报告三

    第五周总结&实验报告三 实验报告 1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码.结果截图.) ① 统计该字符串中字母s ...

  9. 20165236 第六周Java学习总结

    20165236 第六周Java学习总结 一. 第八章内容: 1.String 类: String对象.常量对象:字符串并置: 常用方法: length,equals,startsWith,compa ...

随机推荐

  1. js 倒计时点击和当前时间

    <input id="btn" type="submit" value="确定" disabled="disabled&qu ...

  2. Spring.Net的IOC入门

    1.构造器注入 namespace Spring.Net { class Program { //构造器注入 static void Main(string[] args) { IApplicatio ...

  3. 微信支付开发(1) JS API支付V3版(转)

    http://www.cnblogs.com/txw1958/p/wxpayv3-jsapi.html 本文介绍微信支付下的jsapi实现流程 前言 微信支付现在分为v2版和v3版,2014年9月10 ...

  4. python中如何用dis模块来查看py的汇编代码?

    之前测试不成功,用导入dis的方式. 但如何在命令行里加入 -m dis,就会OK啦. python -m dis test.py #coding: utf8 x = [1, 2, 3] for i ...

  5. 无废话ExtJs 入门教程九[数字字段:NumberField、隐藏字段Hidden、日期字段:DataFiedl]

    无废话ExtJs 入门教程九[数字字段:NumberField.隐藏字段Hidden.日期字段:DataFiedl] extjs技术交流,欢迎加群(201926085) 继上第六节内容,我们在表单里加 ...

  6. JVM_Bind:8080 的解决办法【131031】

    出错情况:运行 Tomcat 时报错 含义:8080 位置显示的端口被其他进程占用 解决方法: 方法1: 开始--运行--cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID ...

  7. sdut 2610:Boring Counting(第四届山东省省赛原题,划分树 + 二分)

    Boring Counting Time Limit: 3000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述     In this problem you a ...

  8. android 入门-android自定义控件

    第一种:继承View 实现自己的属性 <com.cc.imagewithmarkersample.MyView android:id="@+id/myviewid" andr ...

  9. PMP 第八章 项目质量管理

    1规划质量 2实施质量保证 3实施质量控制 质量成本 1.等级和质量的区别?现代质量管理的重要性,关注图8-2    质量是一些列内在特性满足要求的程度,而等级是对用途相同但技术特性不同的产品或服务的 ...

  10. linux 操作mysql

    MySQL删除数据库时的错误 ERROR 1010 (HY000): Error dropping database (can't rmdir './myapp', errno: 39)的错误信息. ...