20145204《Java程序设计》第5周学习总结
20145204《Java程序设计》第5周学习总结
教材学习内容总结
语法与继承构架
我们之前接触到的C通常都是将程序流程和错误处理混在一起,在编写程序的时候必须考虑可能出现的错误并提前做好处理,然而在Java中则将错误以对象的方式呈现为java.lang.Throwable的各种实例,方便我们针对错误进行处理。以下是关于异常处理的学习。
异常体系结构
Throwable定义的错误信息分为两大子类:java.lang.Error和java.lang.exception。
- Error类是程序无法处理的严重的系统错误。有硬件层面的错误,或者内存空间不足等问题。
- Exception是程序本身可以处理的异常。在Java中分为非受检异常和受检异常两大类。受检异常(Exception及其子类)是在写程序时必须明确处理错误的方法,非受检异常(RuntimeException)不要求处理语法。
- 我们要掌握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周学习总结的更多相关文章
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 《Java程序设计》第二周学习总结
20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...
随机推荐
- JS时间格式化函数
Date.prototype.format = function (format) { var o = { "M+": this.getMonth() + 1, //month & ...
- 【BZOJ3434】[Wc2014]时空穿梭 莫比乌斯反演
[BZOJ3434][Wc2014]时空穿梭 Description Input 第一行包含一个正整数T,表示有T组数据求解每组数据包含两行,第一行包含两个正整数N,C(c>=2),分别表示空间 ...
- 豆瓣API接口开发,结合angularJS来做,感觉爽歪歪!
第一次做还是先说下API 是什么鬼? API : application program interface 应用程序编程接口: 有那些常见的API: webAPI : 通过WEB方式提供结构叫 WE ...
- php最全基础,数组,函数,超全局变量,时间,回话,文件,php操作mysql
共享一份学习php最全基础语法知识的笔记 原文链接:http://www.cnblogs.com/oscn/p/3607757.html:略有修改 http://www.cnblogs.com/l ...
- 清空messages方法
1.du -sh /var/log/messages 2.losf /var/log/messages 3.cat /dev/null > /var/log/messages 4.du -sh ...
- saml,sso
saml,sso centos version get:// cat /etc/redhat-release
- MTA---smtp(25,postfix,sendmail),Pop3(110,Devocot), MUA(foxmail) IMAP(server,client rsync)
利用telnet进行SMTP的验证 =========先计算BASE64编码的用户名密码,认证登录需要用到=========== [crazywill@localhost crazywill]$ pe ...
- Python开发【模块】:sqlalchemy
一.对象映射关系(ORM) orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似python这种面向对象的程序来说一切皆对象,但是我们使用的数据库却 ...
- SQL调优学习之——sqlserver分页从低效到高效
背景 首先感谢网友@aixuexi 在评论中的提醒,原博文介绍的几种都不是最高效,现已修改加入另一种更高效的方法. 以前都是使用mysql和oracle,对sqlserver的使用不多.最近因项目原因 ...
- js-template-art【一】简述
一.官方地址 地址:https://github.com/aui/art-template 二.概述 官方对比 三.特性 拥有接近 JavaScript 渲染极限的的性能 调试友好:语法.运行时错误日 ...