201521123112《Java程序设计》第10周学习总结

时间:2023-03-08 15:53:17

1. 本周学习总结

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

201521123112《Java程序设计》第10周学习总结


2. 书面作业

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

1.finally

题目4-2

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

201521123112《Java程序设计》第10周学习总结

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

  • 只有执行过try语句块,才会执行finally中的内容
  • 在try语句块中执行了return操作,finally中的操作也会照样执行

2.用异常改进ArrayIntegerStack

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

201521123112《Java程序设计》第10周学习总结

2.2 实验总结

  • 按照题目的要求编写,如果栈满抛出FullStackException,栈空抛出EmptyStackException

3.自定义异常

题目5-4

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

201521123112《Java程序设计》第10周学习总结

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

  • 自定义异常需要继承Exception或者其子类
  • Checked Exception继承Exception,Uncheck Exception继承RuntimeException

4.读取文件并组装对象

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

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

    public class ReadFileUsingScanner201521123112{
    ... ...
        while(in.hasNextLine()){
            ... ...
            try{
            String a1 = lineScanner.next();//姓名
            if(a1.length() == 0 || a1.length() > 10)
            {
                 System.err.println(line);
                throw new IllegalAccessException("姓名出错");                }
            }
            String a2 = lineScanner.next();// 身份证号
            if (a2.length() != 18) {
                System.err.println(line);
                throw new IllegalAccessException("身份号出错");
            }
             String a3 = lineScanner.next();// 性别
            if (!a3.equals("男") && !a3.equals("女")) {
                System.err.println(line);
                throw new IllegalAccessException("性别出错");
            }
            ... ...
            }catch (IllegalAccessException e) {
            System.out.println(e);
            }
    }

5.学会使用Eclipse进行调试

观看相关调试视频

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

  • 设置断点
  • 开启debug模式
  • 运行程序
  • 解决问题

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

  • F5(step into):跳到某个函数的内部
  • F6(step over):跳过
  • F7(Step Return):跳出某个函数

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

一般会使用sysout来检测是否有执行到该部分来进行调试


6.题集多线程

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

201521123112《Java程序设计》第10周学习总结

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

201521123112《Java程序设计》第10周学习总结

201521123112《Java程序设计》第10周学习总结

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

201521123112《Java程序设计》第10周学习总结

Labmda表达式改写:

    Thread t1 = new Thread(
    () -> {
        System.out.println(mainThreadName);
        System.out.println(Thread.currentThread().getName());
        System.out.println(Arrays.toString(Thread.class.getInterfaces()));
    }
    );

6.4 实验总结

  • 3-1:设置守护线程即可
  • 3-2:在t1.start();之后再使用t2.start();
  • 4-1:根据题目要求重新编写run方法,然后通过循环输出0~n-1,最后调用isAlive来判断线程是否还活着
  • 4-2:在word比较完之后要将其设置为null!在word比较完之后要将其设置为null!在word比较完之后要将其设置为null!

    重要的事情说三遍
  • 4-3:匿名内部类的使用以及run方法的重新编写

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

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

BallRunnable,它实现了Runnable接口,让小球在界面上移动,然后重画、休眠一段时间

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

move方法控制小球的移动

getShape方法获得小球的位置和形状

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

add()加小球,paintComponent();画小球

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

点击addButton的时候会添加一个小球,启动一个新线程

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

建立一个Jframe,然后在加入小球运动的组件,点击addBotton让小球出现然后移动小球,点击一次,出来一个移动的小球。


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

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

让多个用户同时登陆到购物车系统的时候,就需要运用到多线程


10.选做:JavaFX入门

先完成了一个界面,后续还会在继续做

201521123112《Java程序设计》第10周学习总结

3. 码云上代码提交记录

201521123112《Java程序设计》第10周学习总结