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('\n'); } } 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()); } }
-
throws是用来声明一个方法可能抛出的所有异常信息
-
throw则是指抛出的一个具体的异常类型。
-
通常在一个方法(类)的声明处通过throws声明方法(类)可能抛出的异常信息,而在方法(类)内部通过throw声明一个具体的异常信息。
-
throws通常不用显示的捕获异常,可由系统自动将所有捕获的异常信息抛给上级方法。
-
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 |
参考资料
posted on 2016-03-31 20:20 20145239杜文超 阅读(194) 评论(3) 编辑 收藏 举报