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

参考资料

20145239 《Java程序设计》第5周学习总结的更多相关文章

  1. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  2. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  3. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  4. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  5. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  6. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  7. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  8. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  9. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

  10. 《Java程序设计》第二周学习总结

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

随机推荐

  1. SGU 231 Prime Sum 求&lt;=n内有多少对素数(a,b)使得a+b也为素数 规律题

    题目链接:contest=0&problem=231">点击打开链接 题意: 求<=n内有多少对素数(a,b)使得a+b也为素数 思路: 我们发现全部素数间隔都是> ...

  2. C++必知必会(1)

    条款1数据抽象 抽象数据类型的用途在于将变成语言扩展到一个特定的问题领域.一般对抽象数据类型的定义须要准训下面步骤: 1.     为类型取一个描写叙述性的名字 2.     列出类型所能运行的操作 ...

  3. 利用Acunetix WVS进行批量网站漏洞评估

    我们知道Acunetix WVS可以对网站进行安全性评估,那么怎么能批量扫描呢?游侠(www.youxia.org)在测试WVS 8 BETA2的时候发现WVS居然支持WEB管理,还是很方便的. 打开 ...

  4. es6 - 导入导出

    今天用node纠结了半天,明明是正确的语法,一直报错,原来node和chrome并不支持es6语法.... 1. npm install package.json { "name" ...

  5. nginx源代码分析--监听套接字的创建 套接字的监听 HTTP请求创建连接

    作为一个webserver,那么肯定是有监听套接字的,这个监听套接字是用于接收HTTP请求的,这个监听套接字的创建是依据配置文件的内容来创建的,在nginx.conf文件里有多少个地址就须要创建多少个 ...

  6. 性能测试框架Multi-Mechanize安装与使用

    python模块介绍- multi-mechanize 通用的性能测试工具 简介 Multi-Mechanize 是一个开源的性能和负载测试框架,它并发运行多个 Python 脚本对网站或者服务生成负 ...

  7. Excel工作表忘记密码如何破解?

    第一种方法就是按住快捷键ALT+F11,然后切换出VBA编辑窗口,如图一:在该窗口的左侧我们的选择那个忘记密码的工作表,比如sheet 1... 2 然后我们复制以下代码 “Sub Pojie()Ac ...

  8. The Google File System论文拜读

    The Google File System Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung Google∗ 摘要 我们设计并实现了谷歌文件系统 ...

  9. java中的 equals + hashCode

    [0]README 0.1)本文转自 core java volume 1, 旨在理清 equals + hashCode方法: [1]equals方法 1.1) Object中的 equals 方法 ...

  10. 【BZOJ1115】[POI2009]石子游戏Kam 阶梯博弈

    [BZOJ1115][POI2009]石子游戏Kam Description 有N堆石子,除了第一堆外,每堆石子个数都不少于前一堆的石子个数.两人轮流操作每次操作可以从一堆石子中移走任意多石子,但是要 ...