zoukankan      html  css  js  c++  java
  • # 20145334赵文豪 《Java程序设计》第5周学习总结

    20145334赵文豪 《Java程序设计》第5周学习总结

    教材学习内容总结

    第八章

    1.使用try、catch打包System.in.read(),声明throws java.io.IOException。

    2.如果父类异常对象在子类异常前被捕捉,则catch子类异常对象的区块将永远不会被执行。

    3.catch括号中列出的异常不得有继承关系,否则会发生编译错误。

    4.在catch区块进行完部分错误处理之后,可以使用throw将异常再抛出。

    5.操作对象异常无法使用try、catch处理时,可由方法的客户端一句当时调用的环节信息进行处理,使用throw声明会抛出的异常类型或父类。

    第九章

    1.JavaSE中提供了满足各种需求的API,收集对象的行为,都定义在java.collection中,既能收集对象也能驱逐对象。

    2.如果手机是具有索引顺序,可以使用数组。

    3.List是一种Collection,作用是收集对象,并以索引的方式保留手机的对象顺序

    4.ArrayListArrayList特性:数组在内存中会是连续的线性空间,根据索引随机存取时速度快,如果操作上有这类需求时,像是排序,就可使用ArrayList,可得到较好的速度表现。

    5.LinkedList在操作List接口时,采用了链接(Link)结构。

    6.在收集过程中若有相同对象,则不再重复收集,如果有这类需求,可以使用Set接口的操作对象。

    7.HashSet的操作概念是,在内存中开设空间,每个空间会有个哈希编码。;Queue继承自Collection,所以也具有Collection的add()、remove()、element()等方法,然而Queue定义了自己的offer()、poll()与peek()等方法,最主要的差别之一在于:add()、remove()、element()等方法操作失败时会抛出异常,而offer()、poll()与peek()等方法操作失败时会返回特定值。

    8.如果对象有操作Queue,并打算以队列方式使用,且队列长度受限,通常建议使用offer()、poll()与peek()等方法。LinkedList不仅操作了List接口,与操作了Queue的行为,所以可以将LinkedList当作队列来使用。

    教材学习中的问题和解决过程

    关于catch:

    catch语句的参数类似于方法的声明,包括一个例外类型和一个例外对象。例外类型必须为Throwable类的子类,它指明了catch语句所处理的例外类型,例外对象则由运行时系统在try所指定的代码块中生成并被捕获,大括号中包含对象的处理,其中可以调用对象的方法。

    import java.util.*;
    public class Average2 {
    public static  void main(String[] args){
    
    try{
    
        Scanner scanner = new Scanner(System.in);
        double sum = 0;
        int count = 0;
        int number;
        while(true){
            number = scanner.nextInt();
            if(number==0){
    
                break;
            }
            sum+=number;
            count++;
        }
    
        System.out.printf("平均%.2f%n", sum/count);
    
    
    }catch (InputMismatchException ex){
    
        System.out.println("必须输入整数");
    }
    }
    }
    

    关于Throw:
    Throw:throw总是出现在函数体中,用来抛出一个异常。程序会在throw语句后立即终止,它后面的语句执行不到,然后在包含它的所有try块中(可能在上层调用函数中)从里向外寻找含有与其匹配的catch子句的try块。

    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.util.Scanner;
    
    public class FileUtil {
    
     public static String readFile(String name)throws FileNotFoundException{
    
    StringBuilder builder = new StringBuilder();
    try {
        Scanner scanner = new Scanner(new FileInputStream(name));
        while (scanner.hasNext()) {
            builder.append(scanner.nextLine());
            builder.append('
    ');
    
        }
    }
        catch (FileNotFoundException ex){
            ex.printStackTrace();
            throw ex;
    
        }
    
    return builder.toString();
    }
    } 
    

    代码调试中的问题和解决过程

    输入错误,会被打包成对象,可以尝试try()捕捉catch()代表错误的对象后做一些处理。
    代码如下:

    import java.util.* ;
    public class Average2 {
        public static void main(String[] args){
            try{
                Scanner console=new Scanner(System.in);
                double sum=0;
                int count=0;
                while (true) {
                    int number = console.nextInt();
                    if (number == 0) {
                        break;
                    }
                    sum += number;
                    count++;
                }
                System.out.printf("平均%.2f%n",sum/count);
            }catch (InputMismatchException ex){
                System.out.println("必须输入整数");
            }
        }
    }
    

    使用fillInStrackTrace()方法,让异常堆栈起点为重抛异常的地方。

    public class StackTraceDemo3{
        public static void main(String[] args){
            try{
                c();
            }catch(NullPointerException ex){
                ex.printStackTrace();
            }
        }
        static void c(){
            try{
                b();
            }catch(NullPointerException ex){
                ex.printStackTrace();
                Throwable t=ex.fillInStackTrace();
                throw (NullPointerException) t;
            }
        }
        static void b(){
            a();
        }
        static String a(){
            String text=null;
            return text.toUpperCase();
        }
    }
    

    本周代码托管截图

    其他(感悟、思考等,可选)

    世上无难事,只怕有心人。

    本周的学习情况

    学习进度条

    参考资料

  • 相关阅读:
    215. Kth Largest Element in an Array(partition逆序排序,index+1 == k)
    220. Contains Duplicate III(核心:set数组有序/桶排序)
    leetcode 772 基本计算器III(包含+-*/ 以及括号) 核心在于递归
    MTK8312 android 4.4 显示虚拟按键区源码修改
    高通android9.0 camera API1底层调用为HAL3而非HAL1
    使用yanzhenjie的Zbar Github项目时4.2版本上找不到so库的问题
    android studio CMake NDK:配置笔记
    android设置系统默认开机时间
    android开发里跳过的坑——GridView使用Glide加载图片不显示
    android系统编译打开系统蓝牙
  • 原文地址:https://www.cnblogs.com/bestizwh/p/5354628.html
Copyright © 2011-2022 走看看