1. 本周学习总结

1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容。

上周总结了异常,这周主要总结多线程。

2. 书面作业

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

  • 1.finally

    题目4-2

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

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

>   finally也是与try和catch很常见的搭配,形如:
>
try{
//代码区
}catch(Exception e){
//异常处理
}finally{
//必须执行
}
在上述代码中,不管有没有捕捉到异常,finally代码块都将会执行
  • 2.用异常改进ArrayIntegerStack

    题目4-3

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

######2.2 实验总结
> 关键代码如下:
>
> public Integer push(Integer item) throws FullStackException{
if (top>= arrStack.length) throw new FullStackException();
if (item == null) return null;
arrStack[top] = item;
top++;
return item;
}
> 如果想要进行元素入栈操作时栈满,抛出`FullStackException`;
>
> public Integer pop() throws EmptyStackException {
if (top == 0) throw new EmptyStackException();
if (arrStack[top-1] == null) return null;
top--;
return arrStack[top];
}
>
> 如果想要进行元素出栈操作时栈空,抛出`EmptyStackException`;
>
> public Integer peek() throws EmptyStackException {
if(top == 0) throw new EmptyStackException();
if (arrStack[top-1] == null) return null;
return arrStack[top-1];
}
> 如果进行获取栈顶元素时栈空,抛出EmptyStackException。
>
> 用异常对栈进行改进,给错误进行了分类,通过扩展Exception类或其子类来实现。在不同的方法中出现相同的错误时,只需要throw 相同的异常对象即可,获得更为详细的错误信息。通过异常类,我们可以得到更加详细、更为有用的错误信息。以便于我们调试程序。
  • 3.自定义异常

    题目5-4

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

######3.2 自定义异常有哪几个关键点?
>①编写自定义异常类实际上是继承一个API标准异常类,用新定义的异常处理信息覆盖原有信息的过程。自定义异常类名称要让人一看到就知道是什么异常。在5-4题中编写自定义异常类的模式如下:
>
class IllegalScoreException extends Exception{
public IllegalScoreException(String score){
super(score);
}
}
>②发现和抛出一个自定义异常一般利用if和throw语句完成:
>
public int addScore(int score)throws IllegalScoreException{
if(score<0||score>100) throw new IllegalScoreException("score out of range, score="+score);
return score;
}
  • 4.读取文件并组装对象

实验任务书中

中的题目3:读取文件并组装对象

给出关键代码(需出现你的学号)

关键代码:

	try{
String a1 = lineScanner.next();//姓名
String a2 = lineScanner.next();//身份证号
String a3 = lineScanner.next();//性别
String a4 = lineScanner.next();//年龄
String a5 = lineScanner.next();//地址
while(lineScanner.hasNext()){//谨防地址只有一段
a5 += lineScanner.next();
}
list.add(new User(a1,a2,a3,Integer.parseInt(a4),a5));
if(a1.length() == 0){
throw new Exception("名字为空");
}
if(a2.length()!=18||a2.length()==0){
throw new Exception("身份证号出错:"+a2);
}
if(!a3.equals("男")&&!a3.equals("女")){
throw new Exception("性别出错:"+a3);
}
if(a4==null){
throw new Exception("年龄为空:"+a4);
}
if(a5==null){
throw new Exception("地址为空");
}
System.out.println("a1:" + a1 + " a2:" + a2 + " a3:" + a3 + " a4:" + a4 + " a5:" + a5);
} catch (NoSuchElementException e) {
e.printStackTrace();
continue;
}catch (Exception e){ //字符转换为整数异常捕获
e.printStackTrace();
continue;
} }
Collections.sort(list, new Comparator<User>(){
@Override
public int compare(User o1, User o2) {
return o1.getAge()-o2.getAge();
}
}); 当所测试数据有数据缺失时,会抛出异常: ![](http://images2015.cnblogs.com/blog/1109769/201704/1109769-20170429180253694-1713725126.png)
  • 5.学会使用Eclipse进行调试

    观看相关调试视频

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

    ①在正确的地方设置断点

    ②启动调试模式

    ③Eclipse有一个专门的debug perspective,专门用于调试

    ④查看状态值

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

    F5-->step into(跳入):函数就进入并且继续单步执行

    F6-->step over(跳过继续运行):该命令的功能是单步执行代码,如果遇到函数则跳过函数,即把函数当做一条语句来对待

    F7 -->step return(跳出):单步执行到子函数内时,用step return就可以执行完子函数余下部分,并返回到上一层函数。

    总结:想要单步调试进入函数内部使用F5;想要

    单步调试不进入函数内部使用F6;想要由函数内部返回到调用处使用F7。

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

    使用 System.out.println在程序中插入打印语句,但这个方法效率极低。

    5.3 选做:实验任务书中的题目5:使用Eclipse进行调试中的选做
  • 6.题集多线程
    6.1 程序填空3-1、3-2(截图提交结果,出现你的学号)

######6.2 <font color=DarkSeaGreen >**函数4-1(Thread)、4-2(Runnable**</font>)(截图提交结果,出现你的学号)
![](http://images2015.cnblogs.com/blog/1109769/201704/1109769-20170429130224256-915980191.png)
![](http://images2015.cnblogs.com/blog/1109769/201704/1109769-20170429130247600-1248222547.png) ######6.3 <font color=DarkSeaGreen >**函数4-3**</font>(Runnable与匿名内部类)(截图提交结果,出现你的学号),并使用Labmda表达式改写。

Labmda表达式改写:(部分代码)

  	Thread t1 =new Thread(()-> {  

        		    System.out.println(mainThreadName);
System.out.println(Thread.currentThread().getName());
System.out.println(Arrays.toString((new Thread()).getClass().getInterfaces())); }); ######6.4 实验总结 > ①3-1:本题要求主线程退出时,在main方法中所启动的线程也要自动结束。完成此题需要调用setDaemon()方法。如果对某个线程对象在启动(调用start方法)之前调用了setDaemon(true)方法,这个线程就变成了后台线程.对java程序来说,只要还有一个前台线程在运行,这个进程就不会结束,如果一个进程中只有后台线程运行,这个进程会结束.
>
> ②3-2:本题目要求线程打印完后,才执行主线程main方法的最后一句。此时需要join()方法。它的作用是等待线程结束。
> ③4-1:本题让我们掌握创建线程的方法之一。通过继承Thread类,改写run()方法来创建线程。虽然可行但不推荐这个方法。
>
> ④4-2:本题让我们了解了创建线程的另一种方法。定义实现Runnable接口的类,实现它的run()方法,然后将这个类的实例作为Thread的构造方法的参数,创建Thread类的实例。
>
> ⑤4-3:本题考查匿名内部类的编写。具体在上一题中有提到。
  • 7.源代码阅读:多线程程序BounceThread
    7.1 哪个类是支持多线程的类,它实现了什么接口。这个类做了些什么?

    BallRunnable类是支持多线程的类,实现了Runnable接口。在这个类中调用小球移动的函数,移动之后,对界面进行重画,并睡眠一段时间。

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

    ①实现小球的移动确定小球的坐标(0,0)和大小(15x15)

    ②使小球动起来

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

    ①添加小球

    ②画出小球

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

    在运行界面点击相应的开始按钮按钮,程序调用addBall()方法完成添加小球的操作,之后启动了新线程。

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

    ①基本图形界面需要产生(主界面继承JPanel)并编写paintComponent()方法产生小球的大小形状。

    ②创建小球类,写出构造方法以及get,set方法,继承线程类,重写run方法。

    ③点击生成的图形界面中的“start”按钮,每点击一次就产生一个小球,小球按照一定路径运动后停止。

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

    每个用户都是一个线程,多个用户进项网购时,利用多线程就可以完成多个用户同时登陆选购。

3. 码云上代码提交记录

题目集:异常、多线程(3-1, 3-2, 4-1, 4-2, 4-3)

3.1. 码云代码提交记录

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

201521123042 《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. koa-router源码分析

    koa-router源码地址是 koa-router 当前解读版本为7.2.1 关系图 代码结构图 执行流程图 关系对应图 Router方法和属性浅析 methods.forEach 注册注册路由的方 ...

  2. 安装 CentOS 时, BIOS 设置界面,找不到虚拟镜像

    安装 CentOS 时, 遇到 BIOS 设置界面,找不到虚拟镜像  1. 启动电脑或重启电脑,当电脑还没有进入window图标界面,按F2或DEL 2. 左下角有一个 Advanced Mode(F ...

  3. js基础(一)

    javascript基本介绍(一) (后面我会持续写关于关于js的知识,里面写了很多js的小细节大家可以看下希望对大家有帮助,同时希望大家如果感觉有帮助的话可以帮忙顶一下,谢谢了) Javascrip ...

  4. 第8天:CSS制作导航栏

    今天主要学习了网页导航栏的制作.注意:引入外部CSS样式时,如果使用background:url(../images/1.png),一定记得用..跳出当前文件夹,回到上级目录. 一.导航栏实现步骤: ...

  5. Powerdesigner 连接mysql 在指定的DSN中,驱动程序和应用程序之间的体系结构不匹配 SQLSTATE = IM014

    系统环境: WIN7 64位系统, 用Powerdesigner 连接MySQL 逆向工程时 报错 "在指定的DSN中,驱动程序和应用程序之间的体系结构不匹配 SQLSTATE = IM01 ...

  6. jenkins 多选框

    背景jenkins自带的参数化不支持多选框,不过有插件支持:Extended Choice Parameter Plug-In插件地址: https://plugins.jenkins.io/exte ...

  7. 【Linux SELinux】提升系统安全(一)

    本文重点:了解SELinux并能够熟练地启动关闭selinux(就像精通windows系统开关机一样) 背景:在centos5.x之后,selinux 非常完备地成为了系统内核模块,centos5.x ...

  8. 细说 Azure Storage 的冗余策略

    当我们想要把应用搬到云端的时候,首先要关注的便是数据的安全性.当然所有的云服务厂商都会对用户数据承诺一个非常高的安全性,但万一出现意外呢?我们是不是还要有适当的应对方案?比如今年的3月8日晚间,Azu ...

  9. 设计一个程序能够将某一个目录下面的所有文件名打印出来---File类的使用

    ,设计一个程序能够将某一个目录下面的所有文件名打印出来 运用到的方法有:返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录:list()           测试此抽象路径名表示的 ...

  10. mysql语句的一个问题

    刚才在群里有个同学提出了这么一个问题 在Mybatis的mapper文件中有一条语句这么写 说是系统不报错,也没返回,我一看句子应该没什么问题.执行的时候应该是PreparedStatement 执行 ...