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. c/c++ linux 进程间通信系列4,使用共享内存

    linux 进程间通信系列4,使用共享内存 1,创建共享内存,用到的函数shmget, shmat, shmdt 函数名 功能描述 shmget 创建共享内存,返回pic key shmat 第一次创 ...

  2. Swift JSON字符串和字典以及数组的互转

    1.JSONString转换为字典 // JSONString转换为字典 func getDictionaryFromJSONString(jsonString:String) ->NSDict ...

  3. Linux shell编写脚本部署pxe网络装机

    Linux shell编写脚本部署pxe网络装机 人工安装配置,Linux PXE无人值守网络装机  https://www.cnblogs.com/yuzly/p/10582254.html 脚本实 ...

  4. 如何提高 windows 的使用效率?--巧用运行命令

    windows 操作系统可以使用 win+R 运行一些命令执行任务,好处是:高效.快速.准确. 启动程序 将程序 chrome 写入以下注册表中, SOFTWARE\Microsoft\Windows ...

  5. 01背包问题(动态规划)python实现

    01背包问题(动态规划)python实现 在01背包问题中,在选择是否要把一个物品加到背包中.必须把该物品加进去的子问题的解与不取该物品的子问题的解进行比較,这样的方式形成的问题导致了很多重叠子问题, ...

  6. [LeetCode] 8. 字符串转换整数 (atoi)

    题目链接:https://leetcode-cn.com/problems/string-to-integer-atoi/ 题目描述: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先 ...

  7. 极光推送JAVA代码示例

    一. 准备工作 1. 登录极光推送官网https://www.jpush.cn/,注册账号并登录 2. 创建应用 创建应用过程,详见百度经验:http://jingyan.baidu.com/arti ...

  8. Unable to start web server; nested exception is org.springframework.context.ApplicationContextException: Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.

    SpringBoot启动时的异常信息如下: "C:\Program Files\Java\jdk1.8.0_161\bin\java" ......... com.fangxing ...

  9. Binary Search(Java)(非递归)

    public static int rank(int[] array, int k) { int front = 0, rear = array.length - 1; while(front < ...

  10. OpenCV__cv::Mat::step

    step[0]是矩阵中一行元素的字节数 step[1]是矩阵中一个元素的字节数(elemSize) step1 = step / elemSize1,elemSize1是元素的每个通道所占的字节数 s ...