20145213《Java程序设计学习笔记》第六周学习总结
20145213《Java程序设计学习笔记》第六周学习总结
说在前面的话
上篇博客中娄老师指出我因为数据结构基础薄弱,才导致对第九章内容浅尝遏止地认知。在这里我还要自我批评一下,其实我事后没有及时反省,补充数据结构知识,抓紧时间掌握第九章内容,反其道而行现在要在没掌握第九章的情况下写自习第十章、第十一章的内容,简直误人子弟,一派胡言。我认罪,我有错。我深知即使点头如捣蒜,诚惶诚恐也于事无补,拿出干货才是硬道理。我会在下周二之前拿出对第九章内容理解博客。在写本周博客之前我拜访了一些数据结构学的好的同学博客,却并没有找到本周第一个吃螃蟹的人,于是饶有兴趣地看看了他们上周的学习总结,却猝不及防,灵魂深处的震撼无声无息而至。真的,我觉得有些同学学习态度真是让我望其项背,甚至望尘莫及。他们读透教材,在构建自己所理解的Java世界后,在博客中用自己的语言向读者描绘,哪怕辞藻不艳,也是隽永留芳。反观之我是生硬地搬运教材作者的话,借他人之酒杯,凑凑篇幅,实在可恨。影响更深刻的是蔡野同学在博客中表现了自己发现问题,一步步解决问题,最后把自己在过程中学到的经验与读者分享,我觉得这种钻研的劲头是难能可贵的。反求诸己,自己在碰到英文报错的情况下,大部分是寻求同学解决,剩下的是弃之不管。曾以为大家在Java自习路上,都是瘸脚的铁拐李,需要相互帮忙,相互搀扶,相互学习。现在想想,有些人认真的学习态度就可以自成最趁手的铁拐,有些人在学习上的敷衍了事确是自废一腿。情到深处泪空流,说了这么多,其实就是内心受到巨大震撼,暗流涌动,复杂的情绪源源不断从笔尖流淌而出,只有一个想到啥写啥的主线程,跳过了组织语言的线程,倒也是花了不多时间。废话不多说,开始正文吧。
教材学习内容总结
本周学习任务是第十章,第十一章的内容。即输入、输出与线程、并行API。
- 串流
- 数据有来源和目的地,衔接两者的是串流对象。将数据从来源去除,可以使用输入串流,将数据写入目的地,可以使用输出串流。专门提供输入水管的公司叫
java.io,InputStream同样,专门提供输出水管的公司叫java.io.OutputStream - 无论数据源或者目的地为何,只要设法取得
InputStream和OutputStream的实例,接下来操作输入与输出的方式是一致的,无需理会来源或者目的地的真正形式 - 在不使用
InputStream和OutputStream时,必须使用close方法关闭串流。InputStream和OutputStream都操作java.io.Closeable接口,其父接口为java.lang.AutoCloseable接口 InputStream有read()方法,每次回尝试读入byte数组长度的数据,并返回实际读入的字节。OutputStream有write()方法,指定要写出的byte数组、初始索引、数据长度。
- 串流继承架构
- 串流继承架构简单来说,就是介绍
InputStream和OutputStream总公司旗下的几个子公司,闻道有先后,术业有专攻之,具体想用什么水管,就要到具体指公司里去继承。 System.in和System.out表示标准输入与标准输出。如果使用java.util.Scanner打包System.in,你操作Scanner的相关方法,而Scanner会代你操控System.in取得的数据,并转化为取得你想要的数据类型。- 可以使用
System的setIn()方法指定InputStream实例,重新指定标准输入来源。 FileInputStream是InputStream的实例,可以指定文件名创建实例,一旦创建文档就开启,接着就可以用来读取数据。FileOutputStream是OutputStream的实例,可以指定文件名创建实例,一旦创建文档开启,接着就可以用来写出数据。不用时,都要使用close()关闭文档.ByteArrayInputStream是InputStream的实例,可以指定byte数组创建实例,一旦创建就可以将byte数组当做数据源进行读取。ByteArrayOutputStream是OutputStream的实例,可以指定byte数组创建实例,一旦创建就可以将byte数组当做目的地进行读取。
- 串流处理装饰器
InputStream和OutputStream提供串流基本操作,如果想为输入输出的数据加工处理,则可以使用打包器类,常用打包器类有具备缓冲区作用的BufferedInputStream,BufferedOutputStream具备数据转换处理作用的DataInputStream,DataOutputStream具备对象串行化能力的ObjectInputStream,``` ObjectOutputStream ````
- 字符处理类
- 针对字符数据的读取,JavaSE提供了
java.io.Reader类,其抽象化了字符数据读入的来源。针对字符数据的写入,则提供了java.io.Writer类,其抽象化了数据写出的目的地。 FileReader与FileWriter则可以对文档做读取与写入,读取或写入时默认会使用操作系统默认编码来做字符转换。在启动JVM时,可以指定-Dfile.encoding来制定FileReader与FileWriter所使用的编码。Reader与Writer也有一些装饰器类可供使用。如果串流处理的字节数据,实际上代表某些字符的编码数据,而你想要将这些一些字节数据转换为对应的编码字符,可以使用InputStreamReader与OutputStreamWriter对串流数据打包。BufferedInputStream,BufferedOutputStream对串流数据打包
教材学习中的问题和解决过程
又是这个模块了,每次都会有种“少年不识愁滋味,为赋新词强说愁”的感觉。其实我的自习过程就是古井无波的。然而在自习过程中没有问题产生,博客写到这里又没有问题可以在这里提出,我有隐隐觉得这是一个很大的问题。这是不是暴露出我学习积极性不高,没有热情呢?一想到自己缺少其他同学钻研的劲头,我心里隐隐发慌。如果硬要说我在教材学习中碰到什么问题,那就是为什么我会比其他同学缺少发现问题的思考与热情。
代码调试中的问题和解决过程
一开始我求平均数的方法代码如下:
public void showAvg() {
double sum1 = 0;
double sum2 = 0;
double sum3 = 0;
int number = 2;
for (int i = 0; i < n.length; i++) {
if (n[i] != null) {
sum1 = n[i].Chinese + sum1;
sum2 = n[i].English + sum2;
sum3 = n[i].Math + sum3;
continue;
}
System.out.println("Chinese的平均分:" + sum1 / i + "English的平均分:" + sum2 / i + "Math的平均分:" + sum3 / i);
}
}
执行结果如下

第一次求平均数是正确,但接下来竟不断进行求平均数,很明显没有在适宜的时机退出for循环语句,因此我做出以下代码改变:
public void showAvg() {
double sum1 = 0;
double sum2 = 0;
double sum3 = 0;
int number = 2;
for (int i = 0; i < n.length; i++) {
if (n[i] != null) {
sum1 = n[i].Chinese + sum1;
sum2 = n[i].English + sum2;
sum3 = n[i].Math + sum3;
continue;
}
else
break;
}
System.out.println("Chinese的平均分:" + sum1 / (i-1) + "English的平均分:" + sum2 / (i-1) + "Math的平均分:" + sum3 / (i-1));
}
所以做出这样改变,我是想在n[i]读取到null的时候退出for循环,这个代码放在C语言中是没有问题的,但唉Java中却出现编译失败,显示未定义i。后来在咨询同学后才明白这个i我是放在for循环中定义的,在退出for循环后,i就定义失效了。因此,我又做出如下改变:
public void showAvg() {
double sum1 = 0;
double sum2 = 0;
double sum3 = 0;
int number = 0;
for (int i = 0; i < n.length; i++) {
number=i;
if (n[i] != null) {
sum1 = n[i].Chinese + sum1;
sum2 = n[i].English + sum2;
sum3 = n[i].Math + sum3;
continue;
} else
break;
}
System.out.println("Chinese的平均分:" + sum1/number + "English的平均分:" + sum2 /number + "Math的平均分:" + sum3 / number);
}
其他
代码托管如下:








学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 5000行 | 30篇 | 400小时 | |
| 第一周 | 20/20 | 1/1 | 10/10 | |
| 第二周 | 200/220 | 1/2 | 15/25 | |
| 第三周 | 200/420 | 1/3 | 15/40 | |
| 第四周 | 200/620 | 1/4 | 15/55 | |
| 第五周 | 100/720 | 1/5 | 10/65 | |
| 第六周 | 200/920 | 1/6 | 15/80 |
参考资料
*Java学习笔记(第8版)
*《Java学习笔记(第8版)》学习指导
20145213《Java程序设计学习笔记》第六周学习总结的更多相关文章
- 《JAVA程序设计》_第六周学习总结
一.本周学习内容 1.内部类--7.1知识 在一个类的内部定义的类成为内部类,包含内部类的类叫做外嵌类 内部类和外嵌类的关系 外嵌类的成员变量在内部类中仍然有效,内部类也可调用外嵌类中的方法 内部类的 ...
- 201871010123-吴丽丽 《面向对象程序设计(Java)》第十六周学习总结
201871010123-吴丽丽 <面向对象程序设计(Java)>第十六周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...
- 201271050130-滕江南-《面向对象程序设计(java)》第十六周学习总结
201271050130-滕江南-<面向对象程序设计(java)>第十六周学习总结 博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.c ...
- 201871010111-刘佳华《面向对象程序设计(java)》第十六周学习总结
学号-姓名<面向对象程序设计(java)>第十六周学习总结 实验十四 应用程序归档与线程初步 实验时间 2019-12-12 第一部分:理论知识总结 1.程序与进程的概念 ‐程序是一段静 ...
- 201871010104-陈园园《面向对象程序设计(java)》第十六周学习总结
201871010104-陈园园<面向对象程序设计(java)>第十六周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...
- 201871010105-曹玉中《面向对象程序设计(java)》第十六周学习总结
201871010105-曹玉中<面向对象程序设计(java)>第十六周学习总结 项目 内容 这个作业属于哪个过程 https://www.cnblogs.com/nwnu-daizh/ ...
- 201871010107-公海瑜《面向对象程序设计(java)》第十六周学习总结
201871010107-公海瑜<面向对象程序设计(java)>第十六周学习总结 项目 内容 这个作业属于哪 ...
- 201871010128-杨丽霞《面向对象程序设计(java)》第十六周学习总结
201871010128-杨丽霞<面向对象程序设计(java)>第十六周学习总结(1分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-dai ...
- 201871010133-赵永军《面向对象程序设计(java)》第十六周学习总结
201871010133-赵永军<面向对象程序设计(java)>第十六周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...
- 201871010136 -赵艳强《面向对象程序设计(java)》第十六周学习总结
201871010136-赵艳强<面向对象程序设计(java)>第十六周学习总结 项目 内容 这个作业属于哪个课程 <任课教师博客主页链接>https://www.cnbl ...
随机推荐
- Reading Famous blog to prevent me wasting time on blind wandering
I can`t help surfing the useless bbs and some other kind of SNS. The time I begin to do it, it costs ...
- java框架
Dash Reports 1.0发布 Java报表解决方案 http://developer.51cto.com/art/201205/337189.htm http://www.oschina.ne ...
- R语言练习(二)
op <- par(mfrow = c(2, 2)) #设置画布 p2 <- curve(x^2, 0, 1) #绘制曲线 legend("topleft", inse ...
- oracle数据表创建分区与查询
场景: 遇到1亿数据量的数据需要根据用户名做些数据统计分析,想直接做些聚合计算基本没可能,于是打算先根据日期按照年月创建分区,然后对各个分区分别进行统计,最后汇总结果. 有两种方法,分别是手工设置分区 ...
- 解决Linux CentOS中cp -f 复制强制覆盖的命令无效的方法
Linux下默认cp命令是有别名的(alias cp='cp -i'),无法在复制时强制覆盖,即使你用 -f 参数也无法强制覆盖文件,下面提供几个从网上找的Linux下cp命令覆盖的方法. 1)取消c ...
- MySQL也有潜规则 – Select 语句不加 Order By 如何排序?
今天遇到一个问题,有一个 Select 语句没有加 "Order By",返回的数据是不确定的. 这种问题碰到不止几次了.追根寻底, Select 语句如果不加 "Ord ...
- RDS记录
rdsafbnr32uzayn.mysql.rds.aliyuncs.com r7fysfqs90r74cm6
- 用hexo书写github.io博客 学习心得 教程
很久没更新文章了,除了工作忙之外,可能就是自己懒惰了. 最近混迹与github,发现git上写博客也是个很不错的平台. 推荐使用 hexo 模版来书写,毕竟我们重点是写文章,而不是管理,所以有神奇何妨 ...
- 架设WEBIM
使用openfire+jwchat构建. Openfire 采用Java开发,开源的实时协作(RTC)服务器基于XMPP(Jabber)协议.Openfire安装和使用都非常简单,并利用Web进行管理 ...
- 观察者(Observer)模式
http://www.cnblogs.com/zhenyulu/articles/73723.html 一. 观察者(Observer)模式 观察者模式又叫做发布-订阅(Publish/Subscri ...