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

教材学习内容总结

语法与继承构架

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

异常体系结构

Throwable定义的错误信息分为两大子类:java.lang.Errorjava.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. poj_1182 并查集

    题目大意 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B,B吃C,C吃A.现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种. 有人 ...

  2. 【PHPstudy】安装Composer

    1 正确安装phpstudy,启动,右下角 右键选择 cms命令行 2 输入以下命令, 查看是否正确输出版本号. php -v 3 打开命令行并依次执行下列命令安装最新版本的 Composer: ph ...

  3. MUI 图片上传剪切预览,可选(拍照+系统相册)

    整合网上的例子..麻蛋.没跑通..没办法.自己就拿他们的例子完善了一下..已经可以使用了! 准备工作: 这几个文件要引入.特别是JS 文件!!! <link href="../css/ ...

  4. 报错 ERROR in static/js/vendor.b3f56e9e0cd56988d890.js from UglifyJs

    开发vux项目在引入 // 表单验证组件-start import zh_CN from 'vee-validate/dist/locale/zh_CN' import Validator from ...

  5. sencha touch 扩展篇之使用sass自定义主题样式 (上)使用官方的api修改主题样式

    大家知道,sencha touch是通过我们写的js代码来动态渲染单页面生成一个个div+css的html页面来模拟app应用,那么既然是div+css结构的,我们就可以通过修改css样式来自定义我们 ...

  6. salt-ssh的批量脚本及使用方法

    author: headsen   chen date : 2018-08-02   20:06:06 1,salt-ssh的安装: yum -y install epel-release yum - ...

  7. SSH电力项目三 - Dao层、service层查询实现(HQL)

    底层方法封装:模糊查询,姓张的人 查询思路:select * from elec_text o           #Dao层     where o.textName like '%张%'     ...

  8. Yii数据库子查询嵌入select中,而不是where条件语句中

    $subQuery = (new Query())->select('COUNT(*)')->from('user'); // SELECT `id`, (SELECT COUNT(*) ...

  9. phpcms输出logo下拉实例

    {pc:content action=" siteid="$siteid" order="listorder ASC"} {loop $data $k ...

  10. 从零开始写JavaWeb框架(第四章节的AOP)

    使用"链式代理"实现 AOP   本文是<轻量级 Java Web 框架架构设计>的系列博文. 大家是否还记得<Proxy 那点事儿>中提到的 CGLib ...