• Java 第十周总结


    1. 本周学习总结

    2. 书面作业

    1.finally (题目4-2)

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

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

    • finally创建一个代码块。该代码块在一个try/catch 块完成之后另一个try/catch出现之前执行。finally块无论有没有异常抛出都会执行
    • 如果finally块与一个try联合使用,finally块将在try结束之前执行。

    3.自定义异常 (题目5-4)

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

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

    • 编写自定义异常类实际上是继承一个API标准异常类,用新定义的异常处理信息覆盖原有信息的过程。常用的编写自定义异常类的模式如下:
    public class CustomException extends Exception {    //或者继承任何标准异常类
        public CustomException()  {}                //用来创建无参数对象
        public CustomException(String message) {        //用来创建指定参数对象
            super(message);                             //调用超类构造器
        }
    }
    
    • 若同时自定义了多个异常,则可利用多个catch块进行捕获,也可抛出异常。catch块是有顺序的,如果两个异常是子类和父类的关系,则父类的异常必须放在子类异常的后面

    4.读取文件并组装对象

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

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

    Scanner in = new Scanner(new File("身份证号.txt"));//为myfile.txt这个File创建一个扫描器in
                    System.out.println("201521123043")
    		while(in.hasNextLine()){
    			try{
    				String line = in.nextLine();//读出myfile.txt的下一行
    				
    				Scanner lineScanner = new Scanner(line);//为每一行建立一个扫描器
    				//System.out.println("lineScanner="+lineScanner);
    				lineScanner.useDelimiter(" ");//使用空格作为分隔符
    				//System.out.println(line);
    				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));
    				System.out.println(a1+","+a2+","+a3+","+a4+","+a5);
    			}catch(NoSuchElementException  e){
    				e.printStackTrace();
    			}catch(NumberFormatException e){
    				e.printStackTrace();
    			}
    			
    		}
    		in.close();
    

    5.学会使用Eclipse进行调试

    观看相关调试视频

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

    • 首先设置断点,左键双击
    • 在代码编辑区域,点击鼠标右键,选择Debug As,再选择 1 Java Application
    • Debug模式的界面

    Debug(调试)区域,显示当前正在调试代码是什么,在第多少行
    Variables(变量)区域,显示变量的值。
    代码编辑区
    代码结构区,显示代码中的各个方法。
    Console(控制台)区域。

    • 点击调试区的黄色箭头按钮,可以逐句的执行代码,并且同时可以在变量区,实时的看到变量的值变化。
    • 点击调试区的绿色按钮,可以将程序直接执行完毕,跳过所有断点调试。

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

    • F5:Step into 跳入函数或方法
    • F6:Step over 跳出函数或方法
    • F7:Step return 跳回

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

    • 一般使用打印某些其他无关程序的字符,来看程序进行到了哪一步
    • 也可以通过捕获异常来看是否有代码问题

    6.题集多线程

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

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

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

    6.4 实验总结

    • start()

     用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法,这里方法 run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程随即终止。

    • run()

     run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码,这样就没有达到写线程的目的。总结:调用start方法方可启动线程,而run方法只是thread的一个普通方法调用,还是在主线程里执行。这两个方法应该都比较熟悉,把需要并行处理的代码放在run()方法中,start()方法启动线程将自动调用 run()方法,这是由jvm的内存机制规定的。并且run()方法必须是public访问权限,返回值类型为void.。

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

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

    • BallRunnable是支持多线程的类
    • 实现了Runnable接口
    • 这个类也就是控制小球的移动

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

    • public void move(Rectangle2D bounds) 实现小球的移动
    • public Ellipse2D getShape()获取小球坐标

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

    • public void paintComponent(Graphics g) 画出小球
    • public void add(Ball b)添加小球

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

    //按下按钮
     addButton(buttonPanel, "Start", new ActionListener()
             {
                public void actionPerformed(ActionEvent event)
                {
                   addBall();//添加小球
                }
             });
    
    //添加小球的函数
     public void addBall()
       {
          Ball b = new Ball();
          comp.add(b);
          Runnable r = new BallRunnable(b, comp);
          Thread t = new Thread(r);
          t.start();//启动新线程
       }
    

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

    • 首先有一个图形界面
    • 按下start按钮之后,画出一个小球,让小球运动
    • 按一次按钮,出现一个小球,启动一个线程

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

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

    • 购物系统中,多个用户同时都在进行商品的浏览,选择,互相之间除了看到的东西是一样的其他基本互不相关

    3. 码云上代码提交记录

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

  • 相关阅读:
    HIVE调优之JVM重用
    元宇宙到底有多可怕
    关于c++、go、nodejs、python的计算性能测试,结果令人惊讶
    浏览器配套
    oracle 11gR2 离线静默自动安装
    kubernetes 污点与容忍
    Docker中centos7 安装 MySQL
    [Php] Yii2重载\yii\web\UploadedFile::getInstancesByName()以扩大使用范围
    php屏蔽Notice错误
    上传一个.prettierrc文件
  • 原文地址:https://www.cnblogs.com/ycll/p/6785419.html
Copyright © 2020-2023  润新知