zoukankan      html  css  js  c++  java
  • 201521123079《java程序设计》第10周学习总结

    1. 本周学习总结

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

    1.实现多线程的方式:
    方式一:继承Thread类
                  a.自定义类继承Thread类
                  b.在自定义类中重写run()方法
                  c.创建自定义类的对象
                  d.启动线程的对象
    方式二:实现Runnable接口
                  a.自定义类实现Runnable接口
                  b.在自定义类中重写run()方法
                  c.创建自定义类的对象
                  d.创建Thread类的对象,并把c步骤创建的对象作为构造参数传递
    2. 调用start()来启动线程,不能用run()启动线程。
    3. 守护线程: setDaemon(true or false)。
    4. 线程的几种状态: 
                  New(新建)
                  Runnable(就绪):可运行状态
                  Running(运行):正在运行
                  Dead(死亡)
                  阻塞(Blocked):sleep,join,IO阻塞等   
    

    2. 书面作业

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

    1.finally

    题目4-2

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

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

    • try语句执行过后,finally语句才会执行。

    2.用异常改进ArrayIntegerStack

    题目4-3

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

    2.2 实验总结

    • 用if语句作为判断语句判断栈空栈满,在栈满时候入栈、在栈空时候出栈、在栈空时候用throw抛出相应的异常。

    3.自定义异常

    题目5-4

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

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

    • 所有异常都必须是Exception或其子类的子类。
    • 在方法中通过关键字throw抛出异常对象。
    • 若是在当前抛出异常的方法中处理异常,可以用try-catch语句捕获并处理;若不是,在方法的声明处通过关键字throws指明要抛出给方法调用的异常。
    • 异常如果是checked Exception就继承Exception,否则继承RuntimeException。

    4.读取文件并组装对象

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

    public class Main201521123079 {
        private static Scanner in;
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            try{
                Scanner in = new Scanner(new File("身份证号.txt"));//为myfile.txt这个File创建一个扫描器in
                while(in.hasNextLine()){
                    String line = in.nextLine();//读出myfile.txt的下一行
                    Scanner lineScanner = new Scanner(line);//为每一行建立一个扫描器
                    lineScanner.useDelimiter(" ");//使用空格作为分隔符
                    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);
                        try {
                            if (a1.isEmpty())
                                throw new Exception("姓名为空");
                            if (a2.isEmpty())
                                throw new Exception("ID为空");
                            if (a2.length()!=18) {
                                throw new Exception("ID错误");
                            }
                            if (a3.isEmpty())
                                throw new Exception("性别为空");
                            if (!a3.equals("男") && !a3.equals("女")) 
                                throw new Exception("性别格式错误");
                            if (a4.isEmpty())
                                throw new Exception("年龄为空");
                            if (a5.isEmpty())
                                throw new Exception("地址为空");
                        } catch (Exception e) {
                            System.out.println(e);
                        }
                    }catch(Exception e){
                        System.out.println(e);
                    }
                }
                
            }catch(FileNotFoundException e){
                System.out.println(e);
            }finally{
                if(in!=null){
                    try{
                        in.close();
                    }catch(NullPointerException e){
                        System.out.println(e);
                    }
                }
            }
        }
    
    }
    

    5.学会使用Eclipse进行调试

    观看相关调试视频

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

    • 设置断点
    • 启动调试
    • 使用F5F6F7快捷键调试
    • 查看状态值

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

    • F5(step into):跳入某个函数内部
    • F6(step over):跳过某个函数
    • F7(step return):跳出某个函数

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

    • 就直接用输出函数呗,一些比较复杂的,不知道哪一步错的时候,会输出一些标识符帮助判断。

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

    6.题集多线程

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

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


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

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

    6.4 实验总结

    3-1:设置t1为守护线程。
    3-2:使用join()方法。
    4-1:改写run()方法来创建线程。
    4-2:要判断word是否为null,且要用到yield()让给其他线程,才能实现监听是否有“alien”,每次循环后要记得把word再置为null。
    4-3:重写Runnable()的run()方法。

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

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

    • BallRunnable;Runnable接口;该类实现小球的移动。

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

    • 对move函数声明:移动小球到下个位置,击中边缘则返回。
    • 定义getShape方法:获得小球当前的形状并对属性进行声明。

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

    • add(Ball b)添加小球。
    • paintComponent(Graphics g)绘制小球形状。

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

    • 点击添加一个小球的按钮的时候即调用addBall()方法时启动一个新线程。

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

    • 首先建立JFrame窗口,加入显示小球运动的组件,其次点击start小球就会开始移动,小球运动一定路程则停止。

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

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

    • 比如多个用户进行操作时或者一个用户进行多项操作时,比如同时开启多个店铺等。
    1. 码云上代码提交记录

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

    3.1. 码云代码提交记录

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

  • 相关阅读:
    每个Java开发人员都应该知道的4个Spring注解
    JVM中的动态语言支持简介
    深入探索Java设计模式(五)之构建器模式
    Java——MVC模式
    程序出了问题,报错只能参考
    查看电脑端口占用情况
    Java——参数传递
    Python——关于定义过程
    Java——super的使用
    关于如何查看论文是否被SCI或者EI收录
  • 原文地址:https://www.cnblogs.com/xjn12138/p/6785671.html
Copyright © 2011-2022 走看看