201621123040《Java程序设计》第十周学习总结

1.本周学习总结

2.书面作业

2.1常用异常

2.1.1自己以前编写的代码中经常出现什么异常、需要捕获吗(为什么)?应如何避免?

  • 算术异常ArithmeticException(除数为0的情况)
  • 类型强制转换异常ClassCastException(类型强制转换过程中,不能进行转换的情况)
  • 数组越界异常ArrayIndexOutBoundsException(访问数组中的一个非法元素)
  • 上述常发生的异常都是RuntimeException的子类,不一定要捕获;
  • 解决方法:遇到除数为0的情况单独分析;考虑清楚类型转换过程是否恰当,不恰当时则可选择不用此方法的类型转换;访问数组元素时,使用for循环,在数组.length()范围内访问,否则跳出循环

2.1.2什么样的异常要求用户一定要使用捕获处理?

  • RuntimeException异常是Exception异常的子类;继承RuntimeException异常的不一定要捕获;凡是直接继承自Exception的异常都需要捕获处理

2.2处理异常使你的程序更加健壮

2.2.1实验总结。并回答:怎么样才能让你的程序更加健壮?

  • 本题按照题意思路进行即可,在try-catch模块中,在遇到字符型转换成Integer型失败时,重新输入使用i--;最后打印Arrays.toString()即可

  • 在方法中尽量要有try-catch模块,避免运行时报错
  • 使用try-catch模块时,尽量多用finally语句,进行资源的释放
  • 在进行多异常捕获的时候,最后建议加上Exception异常做没有考虑到的异常捕获
  • 对于for循环for(int i=o;i<list.size();i++)显然不如for(int i=o;list!=null&&i<list.size();i++)健壮

参考资料

2.3throw与throws

2.3.1Integer.parsetInt一开始就有大量的抛出异常的代码,这种做法有什么好处?

  • 让编译者知道自己在转制过程所遇到的异常问题,进而尽量规避异常

    if (s == null) s为空
    if (radix < Character.MIN_RADIX)
    if (radix > Character.MAX_RADIX)超限

2.3.2结合自己编写的程序与3.1,分析自己编写的方法抛出异常时一般需要传递给调用者一些什么信息?

  • begin<end抛出IllegalArgumentException异常

    begin<0抛出IllegalArgumentException异常

    end>arr.length抛出IllegalArgumentException异常

2.4用异常改进ArrayIntegerStack

2.4.1结合6-3代码,回答使用抛出异常的方式代表程序运行时出错有什么好处?比单纯的返回错误值,有何优点?

  • 抛出异常,可视为一个断点,便于修改此部分的错误代码,更有针对性;单纯的返回错误值,就相对来说不那么快速且直接的找到错误点,耗时

2.4.2什么时候该使用throw关键字?

  • throw 关键字通常在方法体中,并抛出一个某类的异常对象;且throw语句抛出的只能是类Throwable或其子类的实例对象;程序在执行到throw语句时不会再执行后面的语句;如果抛出的是RuntimeException或Error,则可以选择性地处理该异常

2.4.3如果一个方法内部的内码抛出的是RuntimeException类型的异常,那么方法声明是否应该使用throws关键字,如果使用throws关键字声明该方法抛出的异常,能给我们带来什么好处吗?

  • 抛出的是RuntimeException类型的异常时,没有强制使用throws关键字;如果使用throws关键字声明该方法抛出的异常,可中断运行,找出错误点所在部分

2.5函数题-多种异常的捕获

2.5.1结合6-1代码,回答:一个try块中如果可能抛出多种异常,且异常之间可能有继承关系,捕获时需要注意些什么?

  • 因为异常之间可能有继承关系,捕获的时候就需要先捕获子类异常,再捕获父类异常;

    本题应该先捕获NumberFormatException,再捕获IllegalArgumentException,最后再捕获Exception(NumberFormatExceptionIllegalArgumentException的子类;IllegalArgumentExceptionException的子类)

2.5.2一个try块中如果可能抛出多种异常,使用Java8的多重异常捕获语法需要注意些什么?

  • 对于每一个异常应分别写相应的catch块,且子类异常应写在父类异常之前;

    如果相应异常的操作相同,可使用父类Exception代表所有异常

2.6为如下代码加上异常处理

byte[] content = null;
FileInputStream fis = new FileInputStream("testfis.txt");
int bytesAvailabe = fis.available();//获得该文件可用的字节数
if(bytesAvailabe>0){
    content = new byte[bytesAvailabe];//创建可容纳文件大小的数组
    fis.read(content);//将文件内容读入数组
}
System.out.println(Arrays.toString(content));//打印数组内容

2.6.1改正代码,让其可正常运行。注1:里面有多个方法均可能抛出异常。注2:要使用finally关闭资源。

2.6.2结束处理异常和使用finally关闭资源需要注意一些什么?

  • try-catch-finally语句中,finally语句中的内容一定是需要执行的;但是finally中也可能出现异常,所以必要时在finally中嵌套使用try-catch

2.6.3使用Java7中的try-with-resources来改写上述代码实现自动关闭资源。简述这种方法有何好处?

  • try-with-resources保证资源关闭时,自动调用close函数;大大简化异常出现的次数及分布情况

2.7面向对象设计作业(分组完成,每组不超过3个同学)

登录lib.jmu.edu.cn,对图书进行搜索。然后登录图书馆信息系统,查看我的图书馆。如果让你实现一个图书借阅系统,尝试使用面向对象建模。

2.7.1该系统的使用者有谁?

  • 学生、教师职工、后台管理人员

2.7.2主要功能模块(不要太多)及每个模块的负责人。下周每个人要提交自己负责的模块代码及运行视频。

  • 学生、教师职工:
  • 账户登录

    图书查询

    图书借阅

    图书归还

    查阅账户信息

    退出系统

  • 后台管理人员:
  • 账户信息管理

    图书查询

  • 初期目标是先实现学生、教师职工的功能
  • 组员:林俊伟(负责账户登录和图书查询)

    王彩云(负责图书借阅和图书归还)

    罗佳(负责查阅账户信息和退出系统)

    2.7.3该系统的主要的类设计及类图(可用)

2.7.4你准备如何存储图书信息、解决信息、读者信息等

  • 想过使用动态数组存储相关信息,但是一旦信息量繁杂巨大时,就不便操控;可以使用文件(读入读出)相关信息

3.码云及PTA

3.1码云代码提交记录

3.2截图PTA题集完成情况图

3.3统计本周完成的代码量

周次 总代码量 新增代码量 总文件数 新增文件数
第一周 189 189 10 10
第二周 304 304 9 9
第三周 557 557 10 10
第四周 621 621 8 8
第五周 326 326 7 7
第六周 972 972 12 12
第七周 338 338 4 4
第八周 379 379 6 6
第九周 492 492 5 5
第十周 473 473 6 6
时间: 2024-11-09 05:09:41

201621123040《Java程序设计》第十周学习总结的相关文章

20145311 《Java程序设计》第九周学习总结

20145311 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 16.1JDBC 16.1.1JDBC简介 JDBC(Java DataBase Connectivity)是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商则对接口进行操作,开发人员无须接触底层数据库驱动程序的差异性. 厂商在操作JDBC驱动程序时,依方式可将驱动程序分为4种类型: ·Type 1:JDBC-ODBC Bridge Driver·Type 2:Native API

20165329 《Java程序设计》第九周学习总结

20165329 <Java程序设计>第九周学习总结 教材学习内容总结 第十二章 URL类 构造方法1 try { URL url = new URL("http://www.google.com"); } catch(MalformedURLException e) { System.out.println("Bad URL:"+url); } 构造方法2:用public URL(String protocol,String host,String f

20155336 2016-2017-2《JAVA程序设计》第二周学习总结

20155336 2016-2017-2 <JAVA 程序设计>第二周学习总结 教材学习内容 1: GIT版本检测 2: JAVA中基本类型 整数 字节 浮点数 字符 布尔(▲) 通过API可以得知各个类型可存储的数值范围 public class Range {public static void main(String[] args){ //byte.short.int.long的范围 System.out.printf("%d~%d%n", Byte.MIN_VALU

20145201 《Java程序设计》第一周学习总结

# 20145201 <Java程序设计>第一周学习总结 ## 教材学习内容总结 万事开头难,终于开始学习了Java.寒假的时候看到老师的要求确实有点慌,但是这周翻开书,从书本知识第一行学起,发现并不是自己想想中那么难,只要一步一个脚印,每周有自己的计划,并按照计划按部就班的完成,最后一定会拥有自己的小成果的. 1.1Java不只是语言 Java经过多年的版本更新后,最新的版本是Java SE8. 在java发展的过程中,它的应用领域越来越广,根据不同级别的应用开发区分了不同的应用版本,最终j

20145326蔡馨熠《Java程序设计》第一周学习总结

20145326蔡馨熠 <Java程序设计>第一周学习总结 教材学习内容总结 转眼间新的一学期终于开始了!为什么我这么期待呢?因为这学期可以上娄嘉鹏老师的java程序设计课,我不是什么电脑天才,之前c语言学得也不是特别好.可我就是对hdl和java特别感兴趣(之前在我的问卷调查报告里面提到过),并且寒假的时候在家里也预习了一部分java知识.第一周要求学习两个章节并作心得体会,虽然我早已看过前两章的知识,不过为了进一步巩固,我还是用了星期六一天的时间把第一章和第二章的知识从头到尾仔仔细细的看了

20145224-陈颢文 《Java程序设计》第一周学习总结

20145224 <Java程序设计>第一周学习总结 教材学习内容总结 通过第一周的学习让我对Java有了个初步的了解,知道了Java分为Java SE.Java EE.Java ME三大平台,其中Java SE是基础.Java的一大特点是它可以跨平台,而JVM对Java的跨平台提供了支持,它就类似于一个虚拟机,只要在当前平台安装了相应的JVM,Java程序就有了可以在此平台上运行的基础啦.JRE是Java的执行环境,在安装了JRE的计算机上就可以运行Java的程序了,当然光是可以跑代码对于程

20155335 俞昆 2016-2017-2 《Java程序设计》第九周学习总结

学号 2016-2017-2 <Java程序设计>第九周学习总结 ##JDBC入门 在正式介绍JDBC前,已知JDBC是用来执行SQL的解决方案,开发人员使用JDBC的标准接口,开发人员不需接触底层数据库驱动程序的差异性. 本章,我们需要了解JDBC与API使用和概念,我们先要认识应用程序如何与数据库进行沟通,数据库本身是一种独立运行的应用程旭,程序员撰写的应用程序是利用通信协议对数据库进行指令交换,以进行数据的增加删除以及查找. 通常应用程序会利用一组专门与数据库进行通信协议的链接库,以简化

20145326《Java程序设计》第二周学习总结

20145326<Java程序设计>第二周学习总结 教材学习内容总结 本周学习教材第三章,本章主要讲述了java语言中的一些基础语法,java是个支持面向对象的程序语言,但在正式进入面向对象支持语法的探讨前,对于类型.变量.运算符.流程控制等,这些各种程序语言都会有的基本语法元素,还是要有一定的基础.虽然各种程序语言都有这些基本语法元素,但千万别因此而轻忽它们,因为各种程序语言都有其诞生的宗旨与演化过程,对这些基本语法元素,也就会有其独有的特性. 1. 类型 在java的世界中,并非每个东西都

20145201 《Java程序设计》第一周学习总结(修改)

# 20145201 <Java程序设计>第一周学习总结 ## 教材学习内容总结 万事开头难,终于开始学习了Java.寒假的时候看到老师的要求确实有点慌,但是这周翻开书,从书本知识第一行学起,发现并不是自己想想中那么难,只要一步一个脚印,每周有自己的计划,并按照计划按部就班的完成,最后一定会拥有自己的小成果的. 1.1Java不只是语言 Java经过多年的版本更新后,最新的版本是Java SE8. 在java发展的过程中,它的应用领域越来越广,根据不同级别的应用开发区分了不同的应用版本,最终j

20145238-荆玉茗 《Java程序设计》第一周学习总结

20145238 <Java程序设计>第一周学习总结 教材学习内容总结 Java三大平台:由于java领域的应用越来越广,根据不同级别的应用开发区分了不同的应用版本,后正式更名为Java SE,Java EE,Java ME. Java SE主要分为四个部分:JVM,JRE,JDK和JAVA语言. 了解JCP与JSR.RI.TCK的关系:JSR必须经过JCP投票通过才能成为最终的标准文件,JSR成为最终文件后对其成果做出免费且开发原始码的参考实现,称为RI,由TCK作为技术兼容测试工具箱. 了