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

教材学习内容总结

语法与继承构架

我们之前接触到的C通常都是将程序流程和错误处理混在一起,在编写程序的时候必须考虑可能出现的错误并提前做好处理,然而在Java中则将错误以对象的方式呈现为java.lang.Throwable的各种实例,方便我们针对错误进行处理。以下是关于异常处理的学习。

异常体系结构

Throwable定义的错误信息分为两大子类:java.lang.Error和java.lang.exception。

  1. Error类是程序无法处理的严重的系统错误。有硬件层面的错误,或者内存空间不足等问题。
  2. Exception是程序本身可以处理的异常。在Java中分为非受检异常和受检异常两大类。受检异常(Exception及其子类)是在写程序时必须明确处理错误的方法,非受检异常(RuntimeException)不要求处理语法。
  3. 我们要掌握Exception异常处理必须要对java上层的类认真研究才可以学好。
异常的捕捉和处理

try、catch、finally、throw、throws是在异常处理中的五个关键字。

分别应用于不同状态下的异常处理。

关键字assert

有两种用法:

1、assert boolean_expression;

如果<boolean表达式>为true,则程序继续执行。

如果为false,则程序抛出AssertionError,并终止执行。

2、assert boolean_expression; : detail_expression;

如果<boolean表达式>为true,则程序继续执行。

如果为false,则程序抛出java.lang.AssertionError,并输入<错误信息表达式>。

Collection

Collection简单的理解就是是最基本的集合接口,可以收集对象,一个Collection代表一组Object,即Collection的元素(Elements)。Collection的两个“子接口”List和Set。

List的作用是收集对象,并且以索引的方式保留收集的对象的顺序,set也是用来收集对象,但是set在收集的过程中如果有相同的对象就不再重复收集。

在collection收集对象时,由于事先不知道被收集的对象的形态,因此内部操作时都是用object来参考被收集的对象。

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

课本 TryCatch的两个程序比较:

第一个程序是将while循环语句放在try里面变量的定义都在try-catch里,而且当遇到错误输入时程序即停止。

     try{
Scanner console =new Scanner (System.in);
double sum=0;
int count =0;
while(true){
int number=console.nextInt();
if(number==0)
{
break;// TODO code application logic here
}
sum+=number;
count++;
}System.out.printf("平均 %.2f%n",sum/count);
}catch (InputMismatchException ex){
System.out.println("必须输入整数");
}
} }

运行结果:



第二种方案是try在while循环语句里,这样设置时当遇到错误输入时程序将跳过该输入,直到输入0是停止:

 Scanner console = new Scanner(System.in);
double sum = 0;
int count = 0;
while (true) {
try {
int number = console.nextInt();
if (number == 0) {
break;
}
sum += number;
count++;
} catch (InputMismatchException ex) {
System.out.printf("略过非整数输入:%s%n", console.next());
}
}
System.out.printf("平均 %.2f%n", sum/count);
}

运行结果:

在比较两个程序时这句程序 System.out.printf("平均 %.2f%n", sum/count);在两个程序里的位置不一样,由于它是在while语句结束后才运行,所以我尝试将第一个程序里的这个语句放在与第二个程序里相同的位置,结果如下图:

出错了!细想一下原来try语句块里的内容以对象建立了一个实例,所以try语句块中的变量出了该语句块在调用就会出错。

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

public class Average4 {
public static void main(String[] args) {
double sum = 0;
int count = 0;
while(true){
int number = nextInt();
if(number ==0){
break;
}
sum += number;
count++;
}
System.out.printf("平均 %.2f%n",sum / count);
}
static Scanner console = new Scanner(System.in);
static int nextInt(){
String input = console.next();
while(!input.matches("\\d*")){
System.out.println("请输入数字");
input = console.next();
}
return Integer.parseInt(input);
}gai

在这个程序中将因为是nextInt函数要用static Scanner console = new Scanner(System.in);所以我把放在函数里却出现了问题:

这个不清楚是什么原因,还是static关键词没有弄的很透彻。

本周代码托管截图

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

在这一周的学习中,实践部分加强了许多,以前总是觉得只要能够看懂课本上的代码就够了,所以就会出现一个误区:我明明可以看懂java代码为什么自己编的时候就我从下手?这周我不仅看代码,还试着移动一些看似可以动的代码的位置,可是这些句子一动就错,在初次编译就通不过,在找寻原因的过程中更让我加深了对java概念和java编写程序的理解,慢慢熟悉了java的编写程序规则。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 3500行 30篇 400小时
第一周 100/100 1/1 20/20
第二周 200/300 1/2 30/50
第三周 300/600 2/4 28/78
第四周 300/900 1/5 20/98
第五周 300/1200 1/6 30/128

参考资料

20145204《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. 时序数据库技术体系 – InfluxDB 多维查询之倒排索引

    本文转自: http://hbasefly.com/2018/02/09/timeseries-database-5/ 在时序数据库概述一文中,笔者提到时序数据库的基础技术栈主要包括高吞吐写入实现.数 ...

  2. Docker源码分析(七):Docker Container网络 (上)

    1.前言(什么是Docker Container) 如今,Docker技术大行其道,大家在尝试以及玩转Docker的同时,肯定离不开一个概念,那就是“容器”或者“Docker Container”.那 ...

  3. The 70th problem,UVa10396 Vampire Numbers

    今天看Thinking in Java看到一个吸血鬼数的问题,于是查找UVa里也有类似的问题就动手写了先是用Java写的,不过WA了两次,然后没有发现错误,又用c++写的还是不行.最后发现要排序去重. ...

  4. 2.实现官网环境, 搭建HTTP服务器

    1.建立 HTTP 服务器 Node.js 是为网络而诞生的平台,但又与 ASP.PHP 有很大的不同,究竟不同在哪里呢?如果你有 PHP 开发经验,会知道在成功运行 PHP 之前先要配置一个功能强大 ...

  5. 大规模网站sesson会话保持思路及实践配置

    1.需求: 请教个问题:我用lvs的rr模式,(考虑过 ipvsadm -p,但是这样就失去了负载均衡的意义感觉),后端有10台web,用一台memcached专门用于存储session文件,但是现在 ...

  6. rest_framework之频率详解 03

    访问频率(节流) 1.某个用户一分钟之内访问的次数不能超过3次,超过3次则不能访问了,需要等待,过段时间才能再访问. 2.自定义访问频率.两个方法都必须写上. 登入页面的视图加上访问频率 3.返回值F ...

  7. JavaCSV之读CSV文件

    Java在进行数据处理,有时候难免有进行CSV文件的操作,这里采用了JavaCSV读CSV文件. 1.准备工作 (1)第三方包库下载地址:https://sourceforge.net/project ...

  8. Warm up---hdu4612(缩点,树的直径)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4612 给一个无向图, 加上一条边后,求桥最少有几个: 那我们加的那条边的两个顶点u,v:一定是u,v之 ...

  9. Django中URL的解析和反查

    add by zhj: 如果想用reverse(namespace1:namespace2:...:namespaceN:name)反查url(注意:用reverse('polls:index')方法 ...

  10. Day19 客户关系系统实战

    day19 今日内容 Service事务 客户关系管理系统     Service事务 在Service中使用ThreadLocal来完成事务,为将来学习Spring事务打基础! 1 DAO中的事务 ...