20145304 第五周Java学习报告
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学习报告的更多相关文章
- 第五周Java学习总结(补)
		第五周java学习内容(补) 学习内容: File类方法的操作 public String getName() public boolean canRead() public boolean canW ... 
- 第五周java学习总结
		学号 20175206<Java程序设计>第五周学习总结 教材学习内容总结 6.1 接口 为了克服Java单继承的缺点,Java使用了接口,一个类可以实现多个接口. 使用关键字interf ... 
- 20145307第9周JAVA学习报告
		20145307陈俊达 <Java程序设计>第9周学习总结 教材学习内容总结 JDBC(Java DataBase Connectivity)即java数据库连接,是一种用于执行SQL语句 ... 
- 20145307第八周JAVA学习报告
		20145307<Java程序设计>第8周学习总结 教材学习内容总结 通用API 日志API 1.java.util.logging包提供了日志功能相关类与接口,使用日志的起点是logge ... 
- 20145307第七周JAVA学习报告
		20145307<Java程序设计>第七周学习总结 教材学习内容总结 Lambda Lambda语法概述: Arrays的sort()方法可以用来排序,在使用sort()时,需要操作jav ... 
- 20145307第十周JAVA学习报告
		教材学习内容总结 Java的网络编程 1.计算机网络概述 (1)路由器和交换机组成了核心的计算机网络,计算机只是这个网络上的节点以及控制等,通过光纤.网线等连接将设备连接起来,从而形成了一张巨大的计算 ... 
- 20165319第五周java学习笔记
		教材内容总结 1.String类和StringBuffer类都覆盖了toString方法,都是返回字符串. 所以带不带toString效果是一样的. 2.instanceOf运算符可以用来判断某个对象 ... 
- 第五周总结&实验报告三
		第五周总结&实验报告三 实验报告 1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码.结果截图.) ① 统计该字符串中字母s ... 
- 20165236 第六周Java学习总结
		20165236 第六周Java学习总结 一. 第八章内容: 1.String 类: String对象.常量对象:字符串并置: 常用方法: length,equals,startsWith,compa ... 
随机推荐
- 二、JavaScript语言--JS基础--JavaScript进阶篇--选项卡切换效果
			利用JavaScript知识,实现选项卡切换的效果. 效果图: 文字素材: 房产: 275万购昌平邻铁三居 总价20万买一居 200万内购五环三居 140万安家东三环 北京首现零首付楼 ... 
- 启动ip转法功能
			这种方法无需重启: [root@ha02 ~]# cat /proc/sys/net/ipv4/ip_forward [root@ha02 ~]# sysctl -w net.ipv4.ip_forw ... 
- tomcat7源码编译过程以及问题解决
			http://blog.csdn.net/kaoshangqinghua/article/details/40022315 
- Pyqt QSS简单的Ui美化
			什么是QSS QSS 是Qt StyleSheet 的简称,意思就是qt的样式表格,StyleSheet 可以像CSS一样的写样式.使页面美化跟代码层分开,利于维护. QSS的语法 同css一样,他也 ... 
- python中的monkey-patching
			这个技巧我很少用过. 但知道无防. 在运行时改变函数或类的行为, 一般用猴子补丁,原类,装饰器都可以实现. #!/usr/bin/env python # -*- coding: utf-8 -*- ... 
- Localstorage本地存储兼容函数
			前言HTML5提供了本地存储的API:localstorage对象和sessionStorage对象,实现将数据存储到用户的电脑上.Web存储易于使用.支持大容量(但非无限量)数据同时存储,同时兼容当 ... 
- 证明tmult_ok的正确性
			csapp page124. practice problem 2.35 /* Determine whether arguments can be multiplied without overfl ... 
- 攻城狮在路上(壹) Hibernate(四)--- 对象标识符(OID)生成机制
			Hibernate使用对象标识符(OID)来建立内存中对象和数据库表中记录的对应关系,对象的OID和数据库的主键对应.为了保证OID的唯一性和不可变性,应该让Hibernate来为OID赋值.Hibe ... 
- windows7下安装php的imagick和imagemagick扩展教程
			这篇文章主要介绍了windows7下安装php的imagick和imagemagick扩展教程,同样也适应XP操作系统,Win8下就没测试过了,需要的朋友可以参考下 最近的PHP项目中,需要用到切图和 ... 
- hdu 4041 2011北京赛区网络赛B 搜索 ***
			直接在字符串上搜索,注意逗号的处理 #include<cstdio> #include<iostream> #include<algorithm> #include ... 
