1. 本周学习总结

2. 书面作业

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

finally

题目4-2

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

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

总结:需要注意的是无论怎么样finally块的代码一定会执行,所以必须要执行的代码一定要放在finally块里,就4-2这题来说要求无论程序向系统申请资源成功与否都要释放资源,所以关闭资源的这句代码resource.close();就要放到finally里执行。

用异常改进ArrayIntegerStack

题目4-3

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

2.2 实验总结

总结:在写这题的时候,提交了好多次都不通过,原因是pop时出了问题,后来把arrStack[top-1]的值先提前赋值给一个变量,然后再top--;就成功了,否则pop出的值已经是top--后再减1的值导致出错。

自定义异常

题目5-4

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

5-4这题的第一个测试点一直过不了,还没找到是什么问题。。。

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

答:首先自定义异常必须继承自Throwable或者Exception或者其子类;还要注意是不是需要捕获,本题中的异常是继承Exception的,所以需要捕获;除此之外,自定义异常也是需要有try-catch-finally语句块的,但是需要自己抛出异常。

读取文件并组装对象

实验任务书中中的题目3:读取文件并组装对象

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

public class ReadFileUsingScanner201521123039 {
public static void main(String[] args) throws FileNotFoundException {
Scanner in = null;
ArrayList<User> list = new ArrayList<User>(); try {
in = new Scanner(new File("身份证号.txt"));
while (in.hasNextLine()) {
String line = in.nextLine();// 读出myfile.txt的下一行 Scanner lineScanner = new Scanner(line);// 为每一行建立一个扫描器
// System.out.println("lineScanner="+lineScanner);
lineScanner.useDelimiter(" ");// 使用空格作为分隔符
// System.out.println(line);
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();
}
System.out.println(a1 + a2 + a3 + a4 + a5); } catch (Exception e) {
continue;
}
}
} catch (FileNotFoundException e1) {
System.out.println(e1);
} catch(IllegalArgumentException e2){
System.out.println(e2);
} catch(NoSuchElementException e3){
System.out.println(e3);
}finally {
if (in != null)
in.close();
}
Collections.sort(list,(User o1, User o2) -> {
return o1.getAge() - o2.getAge();
});
for (User user : list) {
System.out.println(user.toString());
}
}

学会使用Eclipse进行调试

观看相关调试视频

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

答:
第一步,设置断点(在行号前面的空白处双击即可);
第二步,启动调试器(点击那个甲壳虫似的图标);
第三步,运行程序,使用快捷键进行调试(常使用F5、F6、F7、F8);
第四步,查看状态值(在右上角可以看见)
第五步,清除断点,关闭调试

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

答:
F5(Step into)是跳进函数或者方法,在需要判断这个方法或者函数内部是否出错、哪里出错的时候使用
F6(Step over)是跳过某一行,如果不需要看某一行的时候可以使用
F7(Step return)是跳出当前进入的函数或者方法,在需要跳出该函数或方法的时候使用

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

答:常见的两种调试方法出了使用Eclipse的调试器还有一种就是我们常用的System.out.println方法。

5.3 选做:实验任务书中的题目5:使用Eclipse进行调试中的选做

题集多线程

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

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

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

Labmda改写如下:

6.4 实验总结

总结:
3-1使用守护线程,因为守护线程的特点是所有的前台线程死亡后守护线程会自动结束,而且3-1要求主线程退出时,在main方法中所启动的线程也要自动结束,所以可以使用守护线程;
3-2题目要求线程打印完后,才执行主线程main方法的最后一句,所以使用join方法,等其他线程执行完再执行本线程即main方法最后一句;
4-1前几次提交不通过是因为System.out.println(Thread.currentThread().getName()+" "+isAlive());这句没有在run方法中执行,而是在MyThread方法中执行,打印出来的信息时主线程的名称;
4-2寻找外星人...没有测试数据可以复制粘贴也是有点麻烦。。。前几次提交没有判断Word为null的情况导致答案错误,还有就是用来停止线程的标志位定义的时候按照老师的来也是答案错误,后来定义为 private volatile boolean flag = false;就可以了。原因是 Volatile修饰的变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值,而且当变量发生变化时,强迫线程将变化值回写到共享内存,这样一来两个不同的线程总是看到某个成员变量的同一个值
4-3题刚开始没理解主线程名要怎么打印,后来发现老师已经定义好了,可以直接用。。。

java之用volatile和不用volatile的区别

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

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

答:BallRunnable类是支持多线程的类,它实现了Runnable接口。

public BallRunnable(Ball aBall, Component aComponent)//初始化
{
ball = aBall;
component = aComponent;
} public void run()
{
try
{
for (int i = 1; i <= STEPS; i++)
{
ball.move(component.getBounds());//调用小球移动的函数
component.repaint();//重画界面
Thread.sleep(DELAY);//睡眠一段时间,CPU让给其它线程
}
}
catch (InterruptedException e)
{
}
}

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

答:在Ball类中定义了move()方法和getShape()函数,move方法获取小球的位置坐标,对小球的移动做出处理,比如碰到框图边缘就反弹;另一个是获取小球的形状及大小

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

答:
public void add(Ball b)
{
balls.add(b);//在面板上添加一个球
}
public void paintComponent(Graphics g)//在面板上画出这个球
{
...
}

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

答:在点击添加这个按钮时,监听器监听到这一动作后就会调用addBall()方法,先comp.add(b)加入一个小球,然后再t.start();启动新线程。

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

答:先用显示弹跳球和开始、关闭按钮的组件构建一个框架,再向容器添加一个“添加”按钮,然后店家“添加”按钮后就可以在画布上添加一个弹跳球,并启动一个线程,使其反弹 ,再移动到一定的次数后就停在同一个位置。

购物车系统中的多线程

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

答:可能多个用户同时登录时,可能会有卡顿的现象,就比如在抢购的时候,就在那一秒同时有多个用户按下购买的按钮,最后的结果就是一部分人可能抢购成功,一部分没有。

选做:单元测试JUint4

实验任务书中的题目6:单元测试使用JUnit4。

选做:JavaFX入门

如果未完成作业1、2的请先完成。如果已完成的请完成第五部分:将数据用 XML 格式存储或第六部分:统计图(漂亮的图表)。注:内有代码,可在其上进行适当的改造。建议按照里面的教程,从头到尾自己搭建。

3.1. 码云代码提交记录

4. 选做:课外阅读

4.1 Java Concurrent Animated

4.2 线程的高级知识笔记

201521123039 《java程序设计》第十周学习总结的更多相关文章

  1. 201521123027 <java程序设计>第十周学习总结

    1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 异常: 多线程: 2.书面作业 Q1.finally 题目4-2 1.1 截图你的提交结果(出现学号) 1.2 ...

  2. Java程序设计第十周学习总结

    Java课程知识梳理: 流的区分; 字符流与字节流的区别: 字节流是直接操作文件本身的,如果没有关闭字节流操作,文件会依然输出内容 而字符流在程序运行之后会发现文件没有任何的内容,这是因为字符流操作的 ...

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

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

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

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

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

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

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

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

  7. 20145237 《Java程序设计》第九周学习总结

    20145237 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令 ...

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

    学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...

  9. 20172325 2018-2019-2 《Java程序设计》第九周学习总结

    20172325 2018-2019-2 <Java程序设计>第九周学习总结 教材学习内容总结 图的定义 图是由顶点集(VertexSet)和边集(EdgeSet)组成,针对图G,顶点集和 ...

  10. 20155334 2016-2017-2 《Java程序设计》第九周学习总结

    20155334 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章:整合数据库 16.1 JDBC入门 JDBC(Java DataBase Conn ...

随机推荐

  1. sqlte3 的约束

    约束是在表的数据列上强制执行的规则.这些是用来限制可以插入到表中的数据类型.这确保了数据库中数据的准确性和可靠性. 约束可以是列级或表级.列级约束仅适用于列,表级约束被应用到整个表. 以下是在 SQL ...

  2. 开源社群系统ThinkSNS+安装部署演示视频!

    社群系统TS+一期版本发布之后,很多小伙伴们反馈安装部署有些困难,那么今天由我们的颜值与技术实力担当乔斌大佬通过录制视频的形式,给大家演示一下部署的整个过程,录制过程中有些杂音,请各位尽情谅解,后续我 ...

  3. 360春秋杯CTF比赛WRIteUP

    题目:where is my cat? 地址:http://106.75.34.78 访问网页出现证书错误的问题,查看证书如下: 抓包发现: Accept-Encoding: gzip, deflat ...

  4. Python - Seaborn可视化:图形个性化设置的几个小技巧

    1 概述 在可视化过程中,经常会对默认的制图效果不满意,希望能个性化进行各种设置. 本文通过一个简单的示例,来介绍seaborn可视化过程中的个性化设置.包括常用的设置,如: 设置图表显示颜色 设置图 ...

  5. TortoiseSVN使用经验

    TortoiseSVN使用经验.. SVN新下载的项目(有感叹号和对勾)正常的-- 没有标识--重启一下电脑, ---------------ipConfig----- SVN是用哪个IP地址chec ...

  6. ​'JAVAC' 不是内部或外部命令的解决方法

    ​'JAVAC' 不是内部或外部命令解决方法.. 在cmd里边输入javac就会提示”'JAVAC' 不是内部或外部命令,也不是可运行的程序 或批处理文件..此时原因分析: 一.确定是否安装了jdk ...

  7. vue-cli脚手架npm相关文件解读(6)build.js

    系列文章传送门: 1.build/webpack.base.conf.js 2.build/webpack.prod.conf.js 3.build/webpack.dev.conf.js 4.bui ...

  8. JavaWeb(七)Cookie,EL表达式,标准标签库

    Cookie Cookie概述 Cookie译为小型文本文件或小甜饼,Web应用程序利用Cookie在客户端缓存服务器端文件.Cookie是以键值对形式存储在客户端主机硬盘中,由服务器端发送给客户端, ...

  9. Linux常见命令(五)——rmdir

      前  言 JRedu 今天我们来介绍第五个命令:rmdir . 命令英文原意:remove empty directories 命令用途: rmdir:删除空目录,非空的目录不能删除 本章内容将详 ...

  10. 说说我和QQ和她的故事

    这篇文章纯属感慨而写, 没有教学性质,额我是Jyang 2780217151是我现在用的QQ,然而这并不是我要说的 大概在11年还是12年的时候,我玩这些所谓的黑客圈子,以前的网名我就不说了. 我记得 ...