20145213《Java程序设计学习笔记》第六周学习总结


说在前面的话

上篇博客中娄老师指出我因为数据结构基础薄弱,才导致对第九章内容浅尝遏止地认知。在这里我还要自我批评一下,其实我事后没有及时反省,补充数据结构知识,抓紧时间掌握第九章内容,反其道而行现在要在没掌握第九章的情况下写自习第十章、第十一章的内容,简直误人子弟,一派胡言。我认罪,我有错。我深知即使点头如捣蒜,诚惶诚恐也于事无补,拿出干货才是硬道理。我会在下周二之前拿出对第九章内容理解博客。在写本周博客之前我拜访了一些数据结构学的好的同学博客,却并没有找到本周第一个吃螃蟹的人,于是饶有兴趣地看看了他们上周的学习总结,却猝不及防,灵魂深处的震撼无声无息而至。真的,我觉得有些同学学习态度真是让我望其项背,甚至望尘莫及。他们读透教材,在构建自己所理解的Java世界后,在博客中用自己的语言向读者描绘,哪怕辞藻不艳,也是隽永留芳。反观之我是生硬地搬运教材作者的话,借他人之酒杯,凑凑篇幅,实在可恨。影响更深刻的是蔡野同学在博客中表现了自己发现问题,一步步解决问题,最后把自己在过程中学到的经验与读者分享,我觉得这种钻研的劲头是难能可贵的。反求诸己,自己在碰到英文报错的情况下,大部分是寻求同学解决,剩下的是弃之不管。曾以为大家在Java自习路上,都是瘸脚的铁拐李,需要相互帮忙,相互搀扶,相互学习。现在想想,有些人认真的学习态度就可以自成最趁手的铁拐,有些人在学习上的敷衍了事确是自废一腿。情到深处泪空流,说了这么多,其实就是内心受到巨大震撼,暗流涌动,复杂的情绪源源不断从笔尖流淌而出,只有一个想到啥写啥的主线程,跳过了组织语言的线程,倒也是花了不多时间。废话不多说,开始正文吧。


教材学习内容总结

本周学习任务是第十章,第十一章的内容。即输入、输出与线程、并行API。

  1. 串流
  • 数据有来源和目的地,衔接两者的是串流对象。将数据从来源去除,可以使用输入串流,将数据写入目的地,可以使用输出串流。专门提供输入水管的公司叫java.io,InputStream同样,专门提供输出水管的公司叫java.io.OutputStream
  • 无论数据源或者目的地为何,只要设法取得InputStreamOutputStream的实例,接下来操作输入与输出的方式是一致的,无需理会来源或者目的地的真正形式
  • 在不使用InputStreamOutputStream时,必须使用close方法关闭串流。InputStreamOutputStream都操作java.io.Closeable接口,其父接口为java.lang.AutoCloseable接口
  • InputStreamread()方法,每次回尝试读入byte数组长度的数据,并返回实际读入的字节。
  • OutputStreamwrite()方法,指定要写出的byte数组、初始索引、数据长度。
  1. 串流继承架构
  • 串流继承架构简单来说,就是介绍InputStreamOutputStream总公司旗下的几个子公司,闻道有先后,术业有专攻之,具体想用什么水管,就要到具体指公司里去继承。
  • System.inSystem.out表示标准输入与标准输出。如果使用java.util.Scanner打包System.in,你操作Scanner的相关方法,而Scanner会代你操控System.in取得的数据,并转化为取得你想要的数据类型。
  • 可以使用SystemsetIn()方法指定InputStream实例,重新指定标准输入来源。
  • FileInputStreamInputStream的实例,可以指定文件名创建实例,一旦创建文档就开启,接着就可以用来读取数据。 FileOutputStreamOutputStream的实例,可以指定文件名创建实例,一旦创建文档开启,接着就可以用来写出数据。不用时,都要使用close()关闭文档.
  • ByteArrayInputStreamInputStream的实例,可以指定byte数组创建实例,一旦创建就可以将byte数组当做数据源进行读取。 ByteArrayOutputStreamOutputStream的实例,可以指定byte数组创建实例,一旦创建就可以将byte数组当做目的地进行读取。
  1. 串流处理装饰器
  • InputStreamOutputStream提供串流基本操作,如果想为输入输出的数据加工处理,则可以使用打包器类,常用打包器类有具备缓冲区作用的BufferedInputStream,BufferedOutputStream具备数据转换处理作用的DataInputStream,DataOutputStream具备对象串行化能力的ObjectInputStream,``` ObjectOutputStream ````
  1. 字符处理类
  • 针对字符数据的读取,JavaSE提供了java.io.Reader类,其抽象化了字符数据读入的来源。针对字符数据的写入,则提供了java.io.Writer类,其抽象化了数据写出的目的地。
  • FileReaderFileWriter则可以对文档做读取与写入,读取或写入时默认会使用操作系统默认编码来做字符转换。在启动JVM时,可以指定-Dfile.encoding来制定FileReaderFileWriter所使用的编码。
  • ReaderWriter也有一些装饰器类可供使用。如果串流处理的字节数据,实际上代表某些字符的编码数据,而你想要将这些一些字节数据转换为对应的编码字符,可以使用InputStreamReaderOutputStreamWriter对串流数据打包。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程序设计学习笔记》第六周学习总结的更多相关文章

  1. 《JAVA程序设计》_第六周学习总结

    一.本周学习内容 1.内部类--7.1知识 在一个类的内部定义的类成为内部类,包含内部类的类叫做外嵌类 内部类和外嵌类的关系 外嵌类的成员变量在内部类中仍然有效,内部类也可调用外嵌类中的方法 内部类的 ...

  2. 201871010123-吴丽丽 《面向对象程序设计(Java)》第十六周学习总结

    201871010123-吴丽丽 <面向对象程序设计(Java)>第十六周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...

  3. 201271050130-滕江南-《面向对象程序设计(java)》第十六周学习总结

    201271050130-滕江南-<面向对象程序设计(java)>第十六周学习总结 博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.c ...

  4. 201871010111-刘佳华《面向对象程序设计(java)》第十六周学习总结

    学号-姓名<面向对象程序设计(java)>第十六周学习总结 实验十四  应用程序归档与线程初步 实验时间 2019-12-12 第一部分:理论知识总结 1.程序与进程的概念 ‐程序是一段静 ...

  5. 201871010104-陈园园《面向对象程序设计(java)》第十六周学习总结

    201871010104-陈园园<面向对象程序设计(java)>第十六周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...

  6. 201871010105-曹玉中《面向对象程序设计(java)》第十六周学习总结

    201871010105-曹玉中<面向对象程序设计(java)>第十六周学习总结 项目 内容 这个作业属于哪个过程 https://www.cnblogs.com/nwnu-daizh/ ...

  7. 201871010107-公海瑜《面向对象程序设计(java)》第十六周学习总结

    201871010107-公海瑜<面向对象程序设计(java)>第十六周学习总结            项目                            内容   这个作业属于哪 ...

  8. 201871010128-杨丽霞《面向对象程序设计(java)》第十六周学习总结

    201871010128-杨丽霞<面向对象程序设计(java)>第十六周学习总结(1分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-dai ...

  9. 201871010133-赵永军《面向对象程序设计(java)》第十六周学习总结

    201871010133-赵永军<面向对象程序设计(java)>第十六周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...

  10. 201871010136 -赵艳强《面向对象程序设计(java)》第十六周学习总结

    201871010136-赵艳强<面向对象程序设计(java)>第十六周学习总结   项目 内容 这个作业属于哪个课程 <任课教师博客主页链接>https://www.cnbl ...

随机推荐

  1. 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 ...

  2. java框架

    Dash Reports 1.0发布 Java报表解决方案 http://developer.51cto.com/art/201205/337189.htm http://www.oschina.ne ...

  3. R语言练习(二)

    op <- par(mfrow = c(2, 2)) #设置画布 p2 <- curve(x^2, 0, 1) #绘制曲线 legend("topleft", inse ...

  4. oracle数据表创建分区与查询

    场景: 遇到1亿数据量的数据需要根据用户名做些数据统计分析,想直接做些聚合计算基本没可能,于是打算先根据日期按照年月创建分区,然后对各个分区分别进行统计,最后汇总结果. 有两种方法,分别是手工设置分区 ...

  5. 解决Linux CentOS中cp -f 复制强制覆盖的命令无效的方法

    Linux下默认cp命令是有别名的(alias cp='cp -i'),无法在复制时强制覆盖,即使你用 -f 参数也无法强制覆盖文件,下面提供几个从网上找的Linux下cp命令覆盖的方法. 1)取消c ...

  6. MySQL也有潜规则 – Select 语句不加 Order By 如何排序?

    今天遇到一个问题,有一个 Select 语句没有加 "Order By",返回的数据是不确定的. 这种问题碰到不止几次了.追根寻底, Select 语句如果不加 "Ord ...

  7. RDS记录

    rdsafbnr32uzayn.mysql.rds.aliyuncs.com r7fysfqs90r74cm6

  8. 用hexo书写github.io博客 学习心得 教程

    很久没更新文章了,除了工作忙之外,可能就是自己懒惰了. 最近混迹与github,发现git上写博客也是个很不错的平台. 推荐使用 hexo 模版来书写,毕竟我们重点是写文章,而不是管理,所以有神奇何妨 ...

  9. 架设WEBIM

    使用openfire+jwchat构建. Openfire 采用Java开发,开源的实时协作(RTC)服务器基于XMPP(Jabber)协议.Openfire安装和使用都非常简单,并利用Web进行管理 ...

  10. 观察者(Observer)模式

    http://www.cnblogs.com/zhenyulu/articles/73723.html 一. 观察者(Observer)模式 观察者模式又叫做发布-订阅(Publish/Subscri ...