20175209 《Java程序设计》第六周学习总结
20175209 《Java程序设计》第六周学习总结
一、教材知识点总结
第七章 内部类与异常类
1.内部类
定义:在一个类中定义的另一个类称作内部类,包含内部类的类成为内部类的外嵌类。
内部类与外嵌类关系:
- 内部类的外嵌类的成员变量在内部类中依然有效,内部类方法可以调用外嵌类方法
- 内部类的类体中不可以声明类变量和类方法,外嵌类类体中可以用内部类声明变量作为成员
- 内部类仅供它的外嵌类使用,当用static修饰内部类时,内部类可以被其他类调用
2.匿名类
和子类相关
匿名类时是一个子类在创建对象时去掉类声明后的类体
- 匿名类中的类体不可以声明static成员变量和static成员方法
- 匿名类是内部类,在创建对象时,要使用父类的 构造方法
和接口相关
匿名类是实现了接口的类去掉类声明后的类体
- 匿名类必须重写接口中的全部方法
3.异常类
- try-catch语句
格式
try {
包含可能发生异常的语句(发生异常后的语句都不会被执行)
}
catch(ExceptionSubClass1 e) {
....
}
catch(ExceptionSubClass2 e) {
....
}
自定义语句
- 在声明方法时使用throws关键字声明要产生的若干个异常
- try语句中用关键字throw抛出具体的异常
- catch捕获throw关键字抛出的异常对象
4.断言
关键字 assert
- 格式
assert booleanExpression;
assert booleanExpression:messageException(booleanExpression值为true继续执行;为false给出问题信息
- IDEA中开启和关闭断言的方法:Run->Edit Configurations->VM options中输入:-ea ->Apply
第十章 输入、输出流
- 输入流:将从外部的存储媒介或其他程序中读入所需要的数据,指向称为他的源
- 输出流:将处理的结果写入到永久的存储媒介中或传送给其他的应用程序,指向称为他的目的地
1.File类
构造方法
File(String filename(文件名));File(String directotyPath(文件路径),String filename);File(File dir(目录),String filename);
目录
public boolean mkdir()创建目录public String[] list(FilenameFilter obj)用字符串形式返回目录下指定类型的所有文件public File [] listFiles(FilenameFilter obj)用File对象形式返回目录下的指定类型所有文件
文件创建与删除
- 当没有指定文件时,调用方法
public boolean createNewFile()建立相应文件 file.delete();删除当前文件
- 当没有指定文件时,调用方法
运行可执行文件
Runtime ec = Runtime.getRuntime();创建对象
2.文件字节输入流
基本步骤
- 设定输入流的源
- 创建指向源的输入流
- 让输入流读取源中的数据
- 关闭输入流
构造方法
FileInputStream(String name);
FileInputStream(File file);
3.文件字节输出流
基本步骤
- 给出输出流的目的地
- 创建指向目的地的输出流
- 让输出流吧数据写入目的地
- 关闭输出流
构造方法
FileOutputStream(String name);
FileOutputStream(File file);
4.文件字符输入输出流
构造方法
FileReader(Srting Filename); FileReader(File Filename);
FileWriter(Srting Filename); FileWriter(File Filename);
FileWriter(Srting Filename,boolean append); FileWriter(File Filename,,boolean append);
5.缓冲流
BufferedReader和BufferedWriter创建的对象成为缓冲输入输出流,增强文件读写能力,二者的源和目的地必须是字符输入和输出流
- 对象的创建
FileReader inOne = new FileReader("Wenjian.txt");
BufferedReader inTwo = BufferedReader(inOne);
FileWriter tofile = new FileWriter("Wenjian.txt");
BufferedWriter out = BufferedWriter(tofile);
6.随机流
RandomAccessFile类创建的对象称为随机流,该类既不是InputStream类的子类,也不是OutputStream的子类
替换或尾加文件内容
构造方法
RandomAccessFile(String name,String mode)
RandomAccessFile(File file,String mode)
- seek(long a)方法
- 定位读写位置距离文件开头的字节个数
7.数组流
- 字节数组流
ByteArrayInputStream(bytep[] buf);
ByteArrayInputStream(bytep[] buf,in offset(开始取得位置),int length(字节长度));
ByteArrayOutputStream(); (默认大小32字节)
ByteArrayOutputStream(int size(初始大小));
字符数组流
- CharArrayReader和CharArrayWriter
8.数据流
- 构造方法
DataInputStream(InputStream in) 创建的数据输入流指向由参数in指向的底层输入流
DataOutputStream(OutputStream out) 创建的数据输出流指向由参数out指向的底层输出流
- 允许按照和机器无关的风格读取Java原式数据
9.对象流
- 输入流对象的创建
FIleOutputStream filOut = new FIleOutputStream("wenjian.txt");
ObjectOutputStream objectOut = new ObjectOutputStream(fileOut);
- 输出流对象的创建
FIleInputStream filIn = new FIleInputStream("wenjian.txt");
ObjectInputStream objectIn = new ObjectInputStream(fileIn);
- 使用对象流时需要保证对象序列化,写入文件时需要保证对象的成员对象也是序列化的
10.序列化与对象克隆
- 使用对象流获取序列化对象的克隆
11.使用Scanner解析文件
- 默认分隔符:以空格作为分隔标记
File file = new File("wenjian.java");
Scanner sc = new Scanner(file);
- 正则表达式作文分隔
File file = new File("wenjian.java");
Scanner sc = new Scanner(file);
sc.useDelimter(正则表达式);
12.文件对话框
- 类JFileChooser创建文件对话框
13.带进度条的输入流
- 输入流类ProgressMonitorInputStream
14.文件锁
- 使用RandomAccessFile流建立指向文件的流对象
- 流调用方法getChannel()获得连接到底层文件的FileChannel对象
- 信道调用tryLock()或lock()方法获得FileLock对象
- 读写是用release()释放文件锁
教材中问题和解决方法
问题1:在IDEA中运行Example10_4代码时总是提示找不到相应文件,尝试在终端下运行仍然出现相同错误

问题1解决办法:IDEA在运行时会自动把".class"文件放到out目录下,因此在运行时会提示找不到文件,之后还有一些例子中的代码也是同样的情况。在反复测试后,在外部建立一个文件将源文件和字节码文件放在一个文件夹中,就可以显示相应内容了

问题2:第十章中给出了很多输入输出类,首先对于这些类不是很了解,此外很多类中的方法都看不懂
问题2解决方法:对于输入输出类的具体作用和用法在观看了视频的讲解后有了更加深入的了解,虽然现在还有一些晕乎乎的,但是比刚刚学习的时候思路清晰了很多,对于流中类的具体功能,花费了大量时间查看API文档后已经了解了他们的作用
问题3:为什么书上的代码中自动产生的文件和运行过程中需要用到的文件都需要放在或者产生在仓库的根目录下(和src文件夹同级的目录下)
问题3解决办法:......虽然现在可以 让代码正常运行,但依旧暂时没搞懂......等待大佬的解答
代码调试中的问题和解决过程
已经融合到上面了
代码托管
https://gitee.com/wangzihong/20175209/tree/master/src
脚本运行截图

虚拟机崩掉了,所以这周的是在Windows里完成的
心得体会
本周的学习内容较多,因此花费了很多的时间,第七章的内容对于我比较简单,也比较容易理解。但是第十章学起来较为困难,首先第十章的内容很多有比较像,之间有很多相似和不同的地方用以弄混,尤其是构造方法和类中含有的特殊方法需要仔细记忆;此外很多类中的方法都不了解,需要花费大量的时间去查找理解,第十章后几节的内容比较总和,涉及到了标签和锁等知识点,还涉及到八九章还没有学的部分,虽然稍微看了一下下但是理解起来还是有些问题。我觉得Java现阶段已经到了质和量共存的时候,在大量学习的同时必须要保证学到的东西能掌握,否则往后学习会更加困难
学习进度条
| 代码行数(累计总数) | 博客量 | 学习时间 | |
|---|---|---|---|
| 目标 | 8000 | 40 | 300 |
| 第一周 | 19 | 1 | 12 |
| 第二周 | 309 | 2 | 15 |
| 第三周 | 740 | 3 | 10 |
| 第四周 | 1468 | 4 | 10 |
| 第五周 | 1922 | 8 | 8 |
| 第六周 | 3290 | 10 | 15 |
20175209 《Java程序设计》第六周学习总结的更多相关文章
- 20175209 《Java程序设计》第九周学习总结
20175209 <Java程序设计>第九周学习总结 一.教材知识点总结 有关数据库下载中存在可能出现的问题已经在博客<数据库安装和使用过程中出现的一些问题>给出了相应的解决办 ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 20145236 《Java程序设计》第九周学习总结
20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...
- 20155304田宜楠2006-2007-2 《Java程序设计》第一周学习总结
20155304田宜楠2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ...
- 20155303 2016-2017-2 《Java程序设计》第二周学习总结
20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...
- 20145237 《Java程序设计》第九周学习总结
20145237 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令 ...
- 20175313 张黎仙《Java程序设计》第九周学习总结
目录 学号 20175313 <Java程序设计>第九周学习总结 一.教材学习内容总结 二.教材学习中的问题和解决过程 三.代码托管 四.心得体会 五.学习进度条 六.参考资料 学号 20 ...
- 20175317 《Java程序设计》第九周学习总结
20175317 <Java程序设计>第九周学习总结 学前准备 首先下载XAMPP,下载完成后打开: 将前两个选项打开 在IDEA中配置驱动mysql-connector-java-5.1 ...
随机推荐
- MySQL InnoDB 日志管理机制中的MTR和日志刷盘
1.MTR(mini-transaction) 在MySQL的 InnoDB日志管理机制中,有一个很重要的概念就是MTR.MTR是InnoDB存储擎中一个很重要的用来保证物理写的完整性和持久性的机制. ...
- centos7个人shell编写环境
一.配置存放文件/root/wang 存放常用的文件/root/wang/shell 存放练习的shell文件/root/wang/succeed_shell 存放有用shell文件/root/bak ...
- Camera Binning Mode
Camera Binning Mode:像素合并模式,将相邻的像素单元电荷通过物理的方法叠加在一起作为一个像素输出信号: 水平方向Binning: 同列相邻行的电荷叠加 垂直方向Binning: ...
- spark-2.4.0-hadoop2.7-简单操作
1. 说明 本文基于:spark-2.4.0-hadoop2.7-高可用(HA)安装部署 2. 启动Spark Shell 在任意一台有spark的机器上执行 # --master spark://m ...
- Spring系列-SpringBoot 学习路径
学习spring boot 已经有很长一段时间,与其说学习,不如说是使用. 在过去的很长时间我一直奉行实用主义,任何技术我都是在应用中使用,很少是因为为了学习而学习. 当然,有那么几次心血来潮,去专门 ...
- 简单理解Java的反射
反射(reflect): JAVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用对象方法的功 ...
- 基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势)
基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势) 前言 前几天对Apollo配置中心的demo进行一个部署试用,现公司已决定使用,这两天进行分布式部署的时候 ...
- Linux内存管理 (9)mmap
专题:Linux内存管理专题 关键词:文件映射.匿名映射.私有映射.共享映射 mmap/munmap是常用的一个系统调用,使用场景是:分配内存.读写大文件.连接动态库文件.多进程间共享内存. 更详细解 ...
- Linux内存管理 (22)内存检测技术(slub_debug/kmemleak/kasan)
专题:Linux内存管理专题 关键词:slub_debug.kmemleak.kasan.oob.Redzone.Padding. Linux常见的内存访问错误有: 越界访问(out of bound ...
- .Net Core应用框架Util介绍(二)
Util的开源地址 https://github.com/dotnetcore/util Util的开源协议 Util以MIT协议开源,这是目前最宽松的开源协议,你不仅可以用于商业项目,还能把Util ...