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

    20145239 《Java程序设计》第5周学习总结

    教材学习内容总结

    (一)掌握try...catch...finally处理异常的方法:

    程序中有许多意想不到的错误,所以我们要学会一些异常错误处理的方法。 例如如下代码:

    import java.util.InputMismatchException;
    import java.util.Scanner;
    
    public class Average {
        public static  void main(String[] args){
    
    
                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);
            }

    在用户输入整数时,要是不小心把0写成了字母o,就会出现如下错误提示:

    这里,我们可以尝试使用try、catch语法:JVM会尝试执行try区块中的程序代码,如果发生错误,就会跳离错误发生点,

    比较catch括号中声明的类型,若符合被抛出错误对象类型,就执行catch区块中的代码。

    修改后的代码:

    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,throws:

    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();
        }
    }

    当方法设计流程出现异常,不知道如何处理时,可以用throws FileNotFoundException抛出异常,让调用方法的客户端来处理。

    (三)理解Collection和Map架构:

    • Collection是一个超级接口,有很多实现这个接口的类,具体用的话,是用这些实现它的那些类,比如ArrayList等,ArrayList是比较常用的。

    ArrayList的一些使用:
    List list = new ArrayList();    //创建一个ArrayList
    list.add(这里存放要添加的元素);    //添加元素
    list.get(int index) ;    //返回此列表中指定位置上的元素。
    list.remove(int index);    //移除此列表中指定位置上的元素。
    list.set(int index, E element) ;    // 用指定的元素替代此列表中指定位置上的元素。
    list.toArray() ;    //按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组。
    • Map其实就是以键值对形式的存放数据的容器,其常用的实现类主要是哈希Map。

    例如:

    Map map = new HashMap();

    插入元素:map.put("key", obj); 
    移除元素: map.remove("key");
    清空: map.clear();

    (四)了解Lambada和泛型:

    • Lambda表达式可以简化匿名函数的写法,减轻程序员负担。例如:
    IntegerFunction doubleFunction = new IntegerFunction(){
        public Integer apply(Integer i){
            return i*2;    }
        
    }

    可以简写为:

    IntegerFunction doubleFunction = (Integer i) -> i * 2;

    (注意:在Lambda表达式中使用区块时,如果方法必须返回值,在区块中就必须使用return)

    • 泛型:即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。

    具体可以参考这篇博客:http://www.cnblogs.com/lwbqqyumidi/p/3837629.html

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

    throw和throws的区别?

    public Test() throws RepletException {
        try {
          System.out.println("Test this Project!")
        }
        catch (Exception e) {
          throw new Exception(e.toString());
        }
      }
    1. throws是用来声明一个方法可能抛出的所有异常信息

    2. throw则是指抛出的一个具体的异常类型。

    3. 通常在一个方法(类)的声明处通过throws声明方法(类)可能抛出的异常信息,而在方法(类)内部通过throw声明一个具体的异常信息。

    4. throws通常不用显示的捕获异常,可由系统自动将所有捕获的异常信息抛给上级方法。

    5. throw则需要用户自己捕获相关的异常,而后在对其进行相关包装,最后在将包装后的异常信息抛出。

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

    package ch89;
    
    import java.util.*;
     class Student {
    
        private String name;
        private  String number;
        Student(String name,String number){
    
            this.number = name;
            this.number = number;
    
    
        }
        @Override
        public String toString()
        {
    
    
            return String.format("(%s,%s)",name,number);
    
        }
    
    }
    public class Students{
    
        public static void main(String[] args){
            Set set = new HashSet();
            set.add(new Student("Justin","B835031"));
            set.add(new Student("Monica","B835032"));
            set.add(new Student("Justin","B835031"));
            System.out.println(set);
        }
    
    }

    运行出错:

    询问老师后发现

    this.number = name;
            this.number = number;

    这句敲错了。修改后:

    this.name = name;
            this.number = number;

    本周代码托管截图

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

          Java的大部分内容已经学完了,虽然很多地方都不太懂,但仔细回想起来其实还是有很多收获的。其实刚开始说要自学我也对自己很没把握,但现在也学到了不少知识,只是可能需要更多的时间来慢慢消化。因为清明要出去玩的缘故,这次提前写了博客,基本上每个字都是自己手敲上去的,那种感觉和复制粘贴得来的东西真的有很多不同。希望下周我也能继续保持这种积极主动的态度。老师说后面几周java课以小组做项目为主,今天的考试我感觉很不理想,虽然老实说java并不是我喜欢的科目,但为了以后能和大家一起做项目,我也不能拖后腿,要赶紧查漏补缺,我相信一切都来得及!

    学习进度条

     代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
    目标 5000行 30篇 400小时  
    第一周 100/100 1/2 12/15  
    第二周 200/300 1/2 15/15  
    第三周 300/300 1/2 20/20  
    第四周 500/500 1/2 25/25  

    第五周 400/400 1/2 19/25  

    参考资料

  • 相关阅读:
    JVM系列三:JVM参数设置、分析
    JVM系列二:GC策略&内存申请、对象衰老
    HotSpot VM GC 的种类
    2.静态库和动态库
    1.GCC编译过程
    6.树
    5.队列
    4.栈
    3.线性表
    2.算法
  • 原文地址:https://www.cnblogs.com/dwc929210354/p/5342552.html
Copyright © 2011-2022 走看看