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程序设计》第六周学习总结的更多相关文章

  1. 20175209 《Java程序设计》第九周学习总结

    20175209 <Java程序设计>第九周学习总结 一.教材知识点总结 有关数据库下载中存在可能出现的问题已经在博客<数据库安装和使用过程中出现的一些问题>给出了相应的解决办 ...

  2. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  3. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  4. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

  5. 20145236 《Java程序设计》第九周学习总结

    20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...

  6. 20155304田宜楠2006-2007-2 《Java程序设计》第一周学习总结

    20155304田宜楠2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ...

  7. 20155303 2016-2017-2 《Java程序设计》第二周学习总结

    20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...

  8. 20145237 《Java程序设计》第九周学习总结

    20145237 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令 ...

  9. 20175313 张黎仙《Java程序设计》第九周学习总结

    目录 学号 20175313 <Java程序设计>第九周学习总结 一.教材学习内容总结 二.教材学习中的问题和解决过程 三.代码托管 四.心得体会 五.学习进度条 六.参考资料 学号 20 ...

  10. 20175317 《Java程序设计》第九周学习总结

    20175317 <Java程序设计>第九周学习总结 学前准备 首先下载XAMPP,下载完成后打开: 将前两个选项打开 在IDEA中配置驱动mysql-connector-java-5.1 ...

随机推荐

  1. ADOConnection断线重连

    问题: ADOConnection断线重连问题描述: 使用ADOConnection连接oracle数据库,开始正常,当网络断开时数据库连接失败(此时查询ADOConnection.connected ...

  2. 实验吧逆向catalyst-system Writeup

    下载之后查看知道为ELF文件,linux中执行之后发现很慢: 拖入ida中查看发现有循环调用 sleep 函数: 这是已经改过了,edit -> patch program -> chan ...

  3. Centos7.5 部署postfix邮件系统

    1. Postfix 1.1 邮件服务的介绍 电子邮件是—种用电子手段提供信息交换的通信方式,是互联网应用最广的服务.通过网络的电子邮件系统,用户可以以非常低廉的价格(不管发送到哪里,都只需负担网费) ...

  4. Python 函数初识 (1)

    一.今日主要内容 认识函数 函数:对功能或者动作的封装(定义) 语法: def 函数名字(形参) 函数体 函数的调用格式:函数名(实参) 函数的返回值 关键字:return 终止函数的运行 1.函数内 ...

  5. Offset Management For Apache Kafka With Apache Spark Streaming

    An ingest pattern that we commonly see being adopted at Cloudera customers is Apache Spark Streaming ...

  6. ubuntu系统下mysql重置密码和修改密码操作

    一.忘记密码后想重置密码 在介绍修改密码之前,先介绍一个文件/etc/mysql/debian.cnf.其主要内容如下图: 里面有一个debian-sys-maint用户,这个用户只有Debian或U ...

  7. 入门 Webpack,一篇就够了

    阅读本文之前,先看下面这个webpack的配置文件,如果每一项你都懂,那本文能带给你的收获也许就比较有限,你可以快速浏览或直接跳过:如果你和十天前的我一样,对很多选项存在着疑惑,那花一段时间慢慢阅读本 ...

  8. Jenkins持续集成实践之java项目自动化部署

    关于Linux安装Jenkins可以参考我的这篇博文Ubuntu16.04环境安装jenkins 1.安装部署插件 进入插件管理,并搜索该插件Deploy to container Plugin进行安 ...

  9. 实现一个book类

    设计实现一个book类 具体要求 定义义成Book.java,Book 包含书名,作者,出版社和出版日期,这些数据都要定义getter和setter. 定义至少三个构造方法,接收并初始化这些数据. 覆 ...

  10. UITouch - BNR

    本节任务:创建一个视图,让用户在视图上拖动手指来画线. UIView类能够重载4个方法来处理不同的触摸事件. - (void)touchesBegan:(NSSet *)touches withEve ...