20145334赵文豪 《Java程序设计》第5周学习总结

教材学习内容总结

第八章

1.使用try、catch打包System.in.read(),声明throws java.io.IOException。

2.如果父类异常对象在子类异常前被捕捉,则catch子类异常对象的区块将永远不会被执行。

3.catch括号中列出的异常不得有继承关系,否则会发生编译错误。

4.在catch区块进行完部分错误处理之后,可以使用throw将异常再抛出。

5.操作对象异常无法使用try、catch处理时,可由方法的客户端一句当时调用的环节信息进行处理,使用throw声明会抛出的异常类型或父类。

第九章

1.JavaSE中提供了满足各种需求的API,收集对象的行为,都定义在java.collection中,既能收集对象也能驱逐对象。

2.如果手机是具有索引顺序,可以使用数组。

3.List是一种Collection,作用是收集对象,并以索引的方式保留手机的对象顺序

4.ArrayListArrayList特性:数组在内存中会是连续的线性空间,根据索引随机存取时速度快,如果操作上有这类需求时,像是排序,就可使用ArrayList,可得到较好的速度表现。

5.LinkedList在操作List接口时,采用了链接(Link)结构。

6.在收集过程中若有相同对象,则不再重复收集,如果有这类需求,可以使用Set接口的操作对象。

7.HashSet的操作概念是,在内存中开设空间,每个空间会有个哈希编码。;Queue继承自Collection,所以也具有Collection的add()、remove()、element()等方法,然而Queue定义了自己的offer()、poll()与peek()等方法,最主要的差别之一在于:add()、remove()、element()等方法操作失败时会抛出异常,而offer()、poll()与peek()等方法操作失败时会返回特定值。

8.如果对象有操作Queue,并打算以队列方式使用,且队列长度受限,通常建议使用offer()、poll()与peek()等方法。LinkedList不仅操作了List接口,与操作了Queue的行为,所以可以将LinkedList当作队列来使用。

教材学习中的问题和解决过程

关于catch:

catch语句的参数类似于方法的声明,包括一个例外类型和一个例外对象。例外类型必须为Throwable类的子类,它指明了catch语句所处理的例外类型,例外对象则由运行时系统在try所指定的代码块中生成并被捕获,大括号中包含对象的处理,其中可以调用对象的方法。

import java.util.*;
public class Average2 {
public static void main(String[] args){ try{ Scanner scanner = new Scanner(System.in);
double sum = 0;
int count = 0;
int number;
while(true){
number = scanner.nextInt();
if(number==0){ break;
}
sum+=number;
count++;
} System.out.printf("平均%.2f%n", sum/count); }catch (InputMismatchException ex){ System.out.println("必须输入整数");
}
}
}

关于Throw:

Throw:throw总是出现在函数体中,用来抛出一个异常。程序会在throw语句后立即终止,它后面的语句执行不到,然后在包含它的所有try块中(可能在上层调用函数中)从里向外寻找含有与其匹配的catch子句的try块。

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner; public class FileUtil { public static String readFile(String name)throws FileNotFoundException{ StringBuilder builder = new StringBuilder();
try {
Scanner scanner = new Scanner(new FileInputStream(name));
while (scanner.hasNext()) {
builder.append(scanner.nextLine());
builder.append('\n'); }
}
catch (FileNotFoundException ex){
ex.printStackTrace();
throw ex; } return builder.toString();
}
}

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

输入错误,会被打包成对象,可以尝试try()捕捉catch()代表错误的对象后做一些处理。

代码如下:

import java.util.* ;
public class Average2 {
public static void main(String[] args){
try{
Scanner console=new Scanner(System.in);
double sum=0;
int count=0;
while (true) {
int number = console.nextInt();
if (number == 0) {
break;
}
sum += number;
count++;
}
System.out.printf("平均%.2f%n",sum/count);
}catch (InputMismatchException ex){
System.out.println("必须输入整数");
}
}
}

使用fillInStrackTrace()方法,让异常堆栈起点为重抛异常的地方。

public class StackTraceDemo3{
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();
}
}

本周代码托管截图

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

世上无难事,只怕有心人。

本周的学习情况

学习进度条

参考资料

# 20145334赵文豪 《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. Redis 的 5 个常见使用场景

    2015-07-22 23:31:46 本文由 伯乐在线 - 刘晓鹏 翻译,黄利民 校稿.未经许可,禁止转载!英文出处:Joe Engel.欢迎加入翻译组. 在这篇文章中,我们将阐述 Redis 最常 ...

  2. poj 1273 最大流

    题目链接:http://poj.org/problem?id=1273 a.EK算法:(Edmond-Karp): 用BFS不断找增广路径,当找不到增广路径时当前流量即为最大流. b.dinic算法: ...

  3. 8659 Mine Sweeping

    时间限制:500MS  内存限制:65535K提交次数:37 通过次数:15 题型: 编程题   语言: G++;GCC Description The opening ceremony of the ...

  4. ZJOI2016二试+游记

    ...excited.... 一场打回原形爽哦. T1莫名爆到了10分,T2T3均没交,一个小时过后就没再拿任何分数,perfectly狗带了... 总之没有给自己充足的时间去敲暴力,ZJOI啊..拿 ...

  5. 关于把世界坐标投射到屏幕上转换为屏幕2D坐标

    如果使用使用Project World to Screen 在一些分辨率一下就出现坐标错误. 比如我设置的UMG分辨率为1280*720,但是他的(1280,720)的坐标并不在UMG的右下角的边缘上 ...

  6. Oralce 常用语句

    注:大写代表需要替换掉额 --更新字段名 alter table TABLE rename column COL_OLD to COL_NEW --添加字段名 alter table TABLE ad ...

  7. python 代码片段17

    #coding=utf-8 try: get_mutex() do_some_stuff() except (IndexError,KeyError,AttributeError),e: log(&q ...

  8. CentOS6.4 增加一个SFTP上传的用户

    #创建sftp组 groupadd sftp #创建一个用户dsideal useradd -g sftp -s /bin/false dsideal #设置dsideal用户的密码 passwd d ...

  9. Codeforces Round #200 (Div. 2) E. Read Time(二分)

    题目链接 这题,关键不是二分,而是如果在t的时间内,将n个头,刷完这m个磁盘. 看了一下题解,完全不知怎么弄.用一个指针从pre,枚举m,讨论一下.只需考虑,每一个磁盘是从右边的头,刷过来的(左边来的 ...

  10. 构建json数据post到接口的若干条规则

    接受数据接口: public ActionResult PostDownloadLog(PostDownloadLog postDownloadLogs) PostDownLoadLogL类 publ ...