1. 本周学习总结

2. 书面作业

本次PTA作业题集异常,多线程

1.finally题目4-2

1.1 截图你的提交结果(出现学号)

1.2 4-2中finally中捕获异常需要注意什么?

  • 一个try语句中最多只能有一个finally,可以没有
  • try后面有return,break,continue等语句中,finally还是会执行。看例子

网上找到这段话(原封不动的摘自于《 The Java Tutorials 》文档)

The finally block always executes when the try block exits. This ensures that the finally block is executed even if an unexpected exception occurs. But finally is useful for more than just exception handling — it allows the programmer to avoid having cleanup code accidentally bypassed by a return,continue, or break. Putting cleanup code in a finally block is always a good practice, even when no exceptions are anticipated.

Note: If the JVM exits while the try or catch code is being executed, then the finally block may not execute. Likewise, if the thread executing the try or catch code is interrupted or killed, the finally block may not execute even though the application as a whole continues.

没找到翻译,用百度翻译加上人工修改了一点儿(不得补吐槽百度翻译,专业词汇都给翻译了)

finally总是在尝试块退出时执行。这确保即使发生意外异常,也会执行最后的块。但最终对于异常处理来说是非常有用的,它允许程序员避免有意外return、continue或break的清理代码。将清理代码放入finally始终是一个很好的做法,即使没有例外预期。

注意:如果JVM正在执行尝试或catch代码时退出,则finally可能无法执行。同样,如果执行尝试或捕获代码的线程被中断或被杀死,则即使应用程序作为一个整体继续执行,但最后的块可能不会执行。

2. 用异常改进ArrayIntegerStack题目4-3

2.1 截图你的提交结果(出现学号)

2.2 实验总结

为什么使用异常代替直接返回null?直接返回null的话,我们只知道错了,但是具体错哪里了,

怎么错的不知道,而使用异常我们甚至可以定位到哪一行错了,结合错误语句进行调试。

3. 自定义异常题目5-4

3.1 截图你的提交结果(出现学号)

3.2 自定义异常有哪几个关键点?

  • 继承自Exception需要处理异常,继承自RuntimeException不一定需要处理.
  • 尽量找找有没有现成的异常继承一下,不要自己制造轮子

4. 读取文件并组装对象实验任务书中中的*题目3:读取文件并组装对象**给出关键代码(需出现你的学号)

  1. import java.io.File;
  2. import java.io.FileNotFoundException;
  3. import java.io.PrintWriter;
  4. import java.util.Scanner;
  5. import java.util.ArrayList;
  6. import java.util.Arrays;
  7. import java.util.EmptyStackException;
  8. import java.util.List;
  9. class User{
  10. String name;
  11. String Id;
  12. String Sex;
  13. int age;
  14. String Addr;
  15. public User(String name, String id, String sex, int age, String addr) throws Exception {
  16. super();
  17. this.name = name;
  18. Id = id;
  19. if(Id.length()!=18){
  20. throw new Exception("Id 长度不符合");
  21. }
  22. Sex = sex;
  23. if(!(Sex.equals("男")||Sex.equals("女"))){
  24. throw new Exception("性别不符合");
  25. }
  26. this.age = age;
  27. if(this.age<0||this.age>150){
  28. throw new Exception("年龄不对");
  29. }
  30. Addr = addr;
  31. }
  32. }
  33. public class ReadFileUsingScanner201521123083{
  34. public static void main(String[] args) throws FileNotFoundException{
  35. List<User> users=new ArrayList<User>();
  36. Scanner in = new Scanner(new File(""
  37. + "身份证号.txt"));//为myfile.txt这个File创建一个扫描器in
  38. while(in.hasNextLine()){
  39. String line = in.nextLine();//读出myfile.txt的下一行
  40. Scanner lineScanner = new Scanner(line);//为每一行建立一个扫描器
  41. //System.out.println("lineScanner="+lineScanner);
  42. lineScanner.useDelimiter(" ");//使用空格作为分隔符
  43. //System.out.println(line);
  44. try{
  45. String a1 = lineScanner.next();//姓名
  46. String a2 = lineScanner.next();//身份证号
  47. String a3 = lineScanner.next();//性别
  48. String a4 = lineScanner.next();//年龄
  49. String a5 = lineScanner.next();//地址
  50. while(lineScanner.hasNext()){//谨防地址只有一段
  51. a5 += lineScanner.next();
  52. }
  53. // System.out.println(a1+" "+a2+" "+a3+" "+a4+" "+a5);
  54. users.add(new User(a1,a2,a3,Integer.parseInt(a4),a5));
  55. }catch(Exception e){
  56. System.out.println(e);
  57. System.out.println(line);
  58. }
  59. }
  60. in.close();
  61. }
  62. }
  1. java.lang.NumberFormatException: For input string: "新疆维吾尔自治区"
  2. 653222196603062607 48 新疆维吾尔自治区 和田地区 墨玉县
  3. java.lang.Exception: Id 长度不符合
  4. 蓝山兰 24 福建省
  5. java.lang.Exception: 性别不符合
  6. 刁贞国 511526198805274593 26 四川省 宜宾市 珙县
  7. java.util.NoSuchElementException
  8. 贺星嘉 云南省 玉溪市 华宁县

5. 学会使用Eclipse进行调试观看相关调试视频

5.1 简述使用Eclipse进行调试需要几步?

  • 根据错误提醒确定大致范围以及错误类型
  • 设置断点
  • 启动调试模式
  • 查看状态值

5.2 调试时F5, F6, F7快键键各有什么不同?什么情况该使用哪个快捷键?

  • F5 进入函数内部
  • F6 跳过函数
  • F7 跳出某个函数

5.3 除了Eclipse的调试器,你还使用什么方法调试程序?

从C语言开始一直使用的手动输出。不过调试完要一个个删除很烦

6. 题集多线程

6.1 程序填空3-1、3-2。(截图提交结果,出现你的学号)

6.2 函数4-1(Thread)、4-2(Runnable)(截图提交结果,出现你的学号)

6.3 函数4-3(Runnable与匿名内部类)(截图提交结果,出现你的学号),并使用Labmda表达式改写。

Labmda:

  1. Thread t1 = new Thread(
  2. ()->{
  3. System.out.println(mainThreadName);
  4. System.out.println(Thread.currentThread().getName());
  5. System.out.println(Arrays.toString(Thread.class.getInterfaces()));
  6. }
  7. );

6.4 实验总结

  • 守护 进程线程, 为其他线程的运行提供服务,因此其他线程都退出,那他就没有什么好服务的
  • join t.join()方法阻塞调用此方法的线程(calling thread),直到线程t完成,此线程再继续;通常用于在main()主线程内,等待其它线程完成再结束main()主线程
  • 多线很多时候很跟匿名内部类一起用可以减少很多代码

7.源代码阅读:多线程程序BounceThread

7.1 哪个类是支持多线程的类,它实现了什么接口。这个类做了些什么?

具备多线程的类

  • BallRunnable

    实现了Runnable接口



一步步移动到当前位置,并重绘,从而让我们看起来小球在移动的动图效果.

7.2 Ball.java这个程序只做了两件事,这两件事分别是什么?

  • move 移动到当前位置
  • getShape 初始化生成一个球

7.3 BallComponent也只做了两件事,这两件事分别是什么?

  • add 添加进一个球
  • paintComponent 画球

7.4 BounceThread中,什么时候启动了新线程?

按动start按钮.

7.5 这个程序是如何实现?一个大致的执行流程是什么?

8.购物车系统中的多线程

8.1 购物车系统中可能存在哪些多线程问题?

  • 不同用户买同一样东西
  • 同一个用户电脑手机同时在线

3. 码云上代码提交记录

题目集:异常多线程

(3-1, 3-2, 4-1, 4-2, 4-3)

3.1. 码云代码提交记录

在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

201521123083 《Java程序设计》第10周学习总结的更多相关文章

  1. 2018面向对象程序设计(Java)第10周学习指导及要求

    2018面向对象程序设计(Java)第10周学习指导及要求(2018.11.1-2018.11.4)  学习目标 理解泛型概念: 掌握泛型类的定义与使用: 掌握泛型方法的声明与使用: 掌握泛型接口的定 ...

  2. 面向对象程序设计(JAVA) 第10周学习指导及要求

    2019面向对象程序设计(Java)第10周学习指导及要求 (2019.11.1-2019.11.4)   学习目标 1.掌握java异常处理技术: 2.了解断言的用法: 3.了解日志的用途: 4.掌 ...

  3. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  4. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  5. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  6. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  7. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  8. 20145236 《Java程序设计》第九周学习总结

    20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...

  9. 20155304田宜楠2006-2007-2 《Java程序设计》第一周学习总结

    20155304田宜楠2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ...

  10. 20155304田宜楠 2006-2007-2 《Java程序设计》第二周学习总结

    20155304田宜楠 2006-2007-2 <Java程序设计>第二周学习总结 教材学习内容总结 一.类型与变量 1.类型 整数: 可细分为为short整数(占2字节),int整数(占 ...

随机推荐

  1. akoj-1074-人见人爱A^B

    人见人爱A^B Time Limit:1000MS  Memory Limit:65536K Total Submit:91 Accepted:55 Description 求A^B的最后三位数表示的 ...

  2. python 脚本在linux环境下运行

    有两种方式:1.直接使用python xxxx.py执行.其中python可以写成python的绝对路径.使用which python进行查询.2.在文件的头部(第一行)写上#!/usr/bin/py ...

  3. [HNOI2013]游走 期望+高斯消元

    纪念首道期望题(虽说绿豆蛙的归宿才是,但是我打的深搜总觉得不正规). 我们求出每条边的期望经过次数,然后排序,经过多的序号小,经过少的序号大,这样就可以保证最后的值最小. 对于每一条边的期望经过次数, ...

  4. 关于mac下配置mysql心得

    PS:配置一个mysql烦了一天,不过还是有所收获. 首先,下载安装我就不多啰嗦了.关键是在我们安装的最后会有一个临时密码,例如我的PBxsy=ES71(u: 这是非常重要的信息,如果没有得到的话,建 ...

  5. Java入门——(8)网络编程

      关键词:IP地址..端口.UDP.DatagramPacket类.DatagramSocket类.TCP.ServerSocket类.Socket类.文件上传     一.基本概念         ...

  6. Slave_SQL_Runing:NO 复制出现问题的解决办法

    --Slave_SQL_Runing:NO 复制出现问题的解决办法 -------------------------------------------------------2014/05/21 ...

  7. 使用VIEWER.JS进行简单的图片预览

    <script src="../res/js/viewer.min.js"></script><script type="text/java ...

  8. Linux学习总结(十)—— Java开发环境搭建:JDK+Maven

    Java开发环境最基础的两个开源软件是JDK和Maven. JDK 到Oracle官网下载相对应的源码包,这里我选择的是:Linux x64系统的jdk-8u131-linux-x64.tar.gz. ...

  9. python对字符串分割和截取的方法

    对字符串的截取我们可以使用split方法,split是分割的按照不同分隔符来分割 现在我们想对正则匹配的内容进行截取   我们先看一下split怎么实现字符串分割 >>> b='aa ...

  10. Mysql数据库防SQL注入原理

    每个语言都有自己的数据库框架或库,无论是哪种语言,哪种库,它们在数据库防注入方面使用的技术原理无外乎下面介绍的几种方法. 一.特殊字符转义处理 Mysql特殊字符指在mysql中具有特殊含义的字符,除 ...