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 ...
随机推荐
- informatica中元数据管理
摘自: http://blog.itpub.net/28690368/viewspace-766528/ informaica是一个很强大的ETL工具,WORKFLOW MANAGER负责对ETL调度 ...
- 分享一个c#t的网页抓取类
using System; using System.Collections.Generic; using System.Web; using System.Text; using System.Ne ...
- wp手机 htc x310e
入手htc x310e 手机不错,用着流畅 不习惯,已升到wp7.8,系统限制还是有些需要的功能没有,比如说短信拦截什么的 我需要的常用软件少 转手了 1 注销windows live? 设置--应用 ...
- vim 编辑器的设置
vi编辑器的配置:http://blog.mcuol.com/User/fenghua/Article/17411_1.htm ******************************vim ~/ ...
- MongoDB的基本使用(二)
上一个文档说明了如何搭建一个Windows端MongoDB服务器,下面将简单介绍MongoDB的基本操作命令. 1. show dbs : 显示所有数据库 2. use bochao : 使用boch ...
- Maven编译项目报错:某些类找不到符号
遇到Maven在编译项目源码时候出现找不到符号错误,主要归结为以下几个问题: 1. 可能项目编码格式不统一. 2. 可能项目编码使用的JDK版本不统一. 项目可能是当前项目也可能是继承的父项目,还 ...
- BZOJ3052——糖果公园
0.题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3052 1.题目大意:给定一颗n个点的无根树,每个点有一个颜色,要进行q次操作,有两种操 ...
- NOIP“对偶”题:还教室
先说一下思路: 方差可以经过恒等变形变成 x12 + x22 + ... + xn2 + 2a(x1 + x2 + ... + xn) + na2 所以维护平方和.连续和即可 平均数我就不再推了…… ...
- ARPACK在window visual Studio的安装配置
ARPACK是一个求解大规模稠密/稀疏矩阵问题的库,最近在做特征值问题时用到.ARPACK这库相当古老,最早是RICE的一帮人弄的.LAPACK也差不多,貌似是美帝某个.gov发起的.这俩源代码是Fo ...
- python egg文件解压
unzip 就可以了. 由于项目需要将某些版本的库打包,然后 sys.path.insert方式引用(避免升级包导致某些旧的系统崩掉). 在将egg文件打包时,发现不可用.但相关模块的__path__ ...