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. nopCommerce安装教程

    nopCommerce是一个通用的电子商务平台,适合每个商家的需要:它强大的企业和小型企业网站遍布世界各地的公司销售实体和数字商品.nopCommerce是一个透明且结构良好的解决方案,它结合了开源和 ...

  2. CentOS 7 服务器配置--配置Tomcat开机启动

    #编辑Tomcat的文件,追加内容 vi /data/tomcat/apache-tomcat-8.0.43/bin/catalina.sh #追加内容,在CLASSPATH= 上面的第三行 CATA ...

  3. 网络与WEB 编程

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Helvetica; color: #29556f } 作为客户端与HTTP 服务交互 问题: ...

  4. Microsoft Visual C++ Package Server 已停止工作

    使用vs2010时,有时会提示“Microsoft Visual C++ Package Server 已停止工作”,是否需要关闭程序或者调试程序. CPkgSrv 是关于Visual Studio ...

  5. css3中的动画效果

    css3中的animation属性动画效果代码如下: <!DOCTYPE html> <html lang="en"> <head> <m ...

  6. phpStudy下安装memcache扩展

    简要:参考<phpStydy配置memcache扩展>,期间安装不到memcache;为此向大家分享我遇到的问题和解决办法,希望能够跟各位PHP大神学习探索,如果有不对或者好的建议告知下: ...

  7. 几个简单的例子让你读懂什么是JAVA的堆栈跟踪

      简单的来说,堆栈跟踪就是我们的程序在抛出异常时使用的方法调用列表. 简单的例子 通过问题中给出的示例,我们可以准确地确定应用程序中抛出异常的位置. 我们来看看堆栈跟踪: Exception in ...

  8. How to execute tons of tasks parallelly with TPL method?

    List<Task> taskList = new List<Task>(); // string currentNoStr = null; cannot define at ...

  9. vue调试工具vue-devtools安装及使用

    本文主要介绍 vue的调试工具 vue-devtools 的安装和使用 工欲善其事, 必先利其器, 快快一起来用vue-devtools来调试开发你的vue项目吧 安装:  1.到github下载: ...

  10. 也来谈谈IT培训

    园子里这篇博客火了:谈谈培训机构的"骗局"给新人一些建议,刚好我也一直被问到这个话题,今天就凑个热闹,一吐为快吧. 我从包工头转行做开发,是进了培训班的,但两年的课程,我只学了半年 ...