20165211 2017-2018-2 《Java程序设计》第5周学习总结

教材学习内容总结

本周,我学习了书本上第五、六两章的内容,以下是我整理的主要知识。

第五章 内部类与异常类

内部类

类的两个重要成员:成员变量和方法。除此之外还可以有一种成员:内部类!

内部类:在一个类中定义另一个类

外嵌类:包含内部类的类

内部类和外嵌类的关系:外嵌类的成员变量在内部类仍然有效,内部类中的方法也可以调用外嵌类中的方法。

​ 内部类中的类体不可以声明类变量和类方法。外嵌类的类体可以用内部类声明对象

​ 内部类仅供它的外嵌类使用

Java编辑器生成的内部类的字节码名字格式外嵌类名$内部类名

内部类可以被修饰为static内部类,但是,static内部类不能操作外嵌类中的实例成员变量,非内部类不可以是static类

匿名类
2.1 和子类有关的匿名类

没有显示的定义一个类的子类,而又想用子类创建一个对象,可以直接使用一个类的子类的类体创建一个子类对象

不能用匿名类声明对象,但是却可以直接用匿名类创建一个对象。匿名类对象的引用可以传递给一个匹配的参数。

匿名类的特点:

  • 匿名类亦可继承父类的方法,也可以重写父类的方法。
  • 匿名类一定是内部类
  • 匿名类可以访问外嵌类中的成员变量和方法,匿名类的类体中不可以申明static成员变量和方法
  • 用匿名类创建对象时,要直接使用父类的构造方法
2.2 与接口有关的匿名类

没有显示的定义一个实现接口类,而又想实现该接口的类创建一个对象。

异常类

异常:程序运行时可能出现的一些错误

3.1 try-catch语句
try {
包含可能发生异常的语句
}
catch(ExceptionSubClass1 e){
...
}
catch(ExceptionSubClass2 e){
...
}
3.2 自定义异常类

一个方法在申明是可以使用throws关键字声明要产生的若干个异常,并在该方法的方法体中具体给出产生异常的操作,即用相应的异常类创建对象。

断言

assert booleanExpression,assert booleanExpression:messageException

启用或关闭断言语句:java -ea mainClass

第10章 接口与实现

File类
文件的属性
public String getName() 获取文件的名字
public boolean canRead() 判断文件是否可读
public boolean canWrite() 判断文件是否可被写入
public boolean exists() 判断文件是否存在
public long length() 获取文件的长度
public String getAbsolutePath() 获取文件的绝对路径
public String getParent() 获取文件的父目录
public boolean isFile() 判断文件是否是一个普通文件
public boolean isDirectory() 判断文件是否是一个目录
public boolean isHidden() 判断文件是否是隐藏文件
public long lastModified() 获取文件最后修改的时间
目录

创建目录:public boolean mkdir()

列出目录中的文件:

public String[] list() 用字符串形式返回目录中的全部文件
public File[] listFiles() 用File对象形式返回目录中的全部文件
public String[] list(FilenameFilter filter) 用字符串返回由包含在目录中指定类型的所有文件
public File[] listFiles(FileFilter filter) 用File对象形式返回由包含在目录中指定类型的所有文件
文件的创建与删除

创建:例:File file =new file("C://myletter","letter.txt")

删除:file.delete()

运行可执行文件

使用Runtime类声明一个对象:Runtime ec

使用该类的getRuntime()静态方法创建这个对象:ec = Runtime.getRuntime

文件字节输入流

使用输入流通常包括4个基本步骤:

  1. 设定输入流的源
  2. 创建指向源的输入流
  3. 让输入流读取流中的数据
  4. 关闭输入流
构造方法
FileInputStream(String name);
FileInputStream(File file);
File f=new File("D:/2000/E.java");
FileInputStream input=new FileInputStream(f);
使用输入流读取字节
void write(int n) 输出流调用该方法向目的地写数据
void write(byte b[]) 输出流调用该方法向目的地写入一个字节数组
void write(byte b[],int off,int len) 给定字节数组中起始于偏移量off处取len个字节写到目的地
void close() 关闭输出流
文件字符输入,输出流

以char为单位,构造方法:

FileReader(String filename): FileReader(File filename);

FileWrite(String filename):FileWrite(File filename);

FileWrite(String filename,boolean append);

FileWrite(File filename,boolean append);

缓冲流

BufferedReader,BufferedWrite类缓冲输入、输出流可以增强读写文件的能力

BufferedReader,BufferedWrite类,二者的源和目的地必须是字符输入流和字符输出流

BufferedReader,BufferedWrite类的构造方法:

BufferedReader(Reader in):
Reader in=new FileReader("a.txt");
BufferedReader inTwo=new BufferedReader(in);
BufferedWrite (Wirte out);
Write out=new FileWrite("b.txt");
BufferedWrite outTwo=new BufferedWrite(out);
outTwo("你好a",0,3);
随机流

RandomAccessFile类创建的流叫做随机流,不是InputStream类和OutputStream类的子类

指向可以既可以作为流的源,也可以作为流的目的地

构造方法:RandomAccessFile(String name,String mode)

​ RandomAccessFile(File file,String mode)

数组流
字节数组流

字节数组输入流ByteArrayInputStream,字节数组输出流ByteArrayoutputStream

构造方法:

  • ByteArrayInputStream:

    ByteArrayInputStream(byte[] buf);
    ByteArrayInputStream(byte[] buf,int offset,int length);
  • ByteArrayoutputStream:

ByteArrayoutputStream();
ByteArrayoutputStream(int size);
字符数组流

CharArrayReader,CharArrayWrite

数据流

DataInputStream和DataoutputStream类创建的对象称为数据输入流和数据输出流

构造方法:DataInputStream:DataInputStream(InputStream in)

​ DataOutputStream:DataOutputStream(OutputStream out)

对象流

ObjectInputStream、ObjectoutputStream分别是InputStream和outputStream类的子类,创建的对象称为对象输入流和对象输出流。

构造方法:ObjectInputStream:ObjectInputStream(InputStream in)

​ ObjectOutputStream:ObjectOutputStream(OutputStream out)

在使用对象流写入或读入对象时,要保证对象是序列化的。

序列化与对象克隆

对象的复制品,且复制品的实体的变化不会引起原对象实体发生变化,这样的复制品称为原对象的一个克隆对象,简称克隆。

对象输入流通过对象的序列化信息来得到当前对象的一个克隆

使用Scanner解析文件
使用默认分割标记解析文件

创建Scanner的对象,并指向要解析的文件:

File file=new File("hello.java");
Scanner sc=new Scanner(file);

那么sc将空格作为分割标记、调用next()方法依次返回file中的单词,如果file最后一个单词已被next()方法返回,sc调回hasNext()将返回false,否则返回true

使用正则表达式作为分割标记解析文件

File file = new File(“hello.java");

Scanner sc=new Scanner(file);

sc useDelimiter(正则表达式);

那么sc将正则表达式作为分隔标记

文件对话框

文件对话框是一个选择文件的界面。javax.swing包中的JFileChooser可以创建文件对话框

带进度条的输入流

javax.swing包中的ProgressMonitorInputStream输入流类,可以看见文件的读取进度

代码调试中的问题和解决过程

  • 问题1:

  • 问题1解决方案:括号内数据间隔符号使用错误

  • 问题2:

  • 问题2解决方案:句末的分号使用了中文字符

代码托管

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 37/37 1/1 10/10
第二周 399/436 1/2 12/22
第三周 764/1163 1/3 18/40
第四周 687/1813 1/4 12/52
第五周 1127/2916 1/5 10/62

20165211 2017-2018-2 《Java程序设计》第5周学习总结的更多相关文章

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

    学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...

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

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

  3. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

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

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

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

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

  6. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

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

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  8. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  9. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

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

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

随机推荐

  1. 币安Binance API Websocket

    本文介绍币安Binance API Websocket General WSS information The base endpoint is: wss://stream.binance.com:9 ...

  2. Python命令行解析库argparse(转)

    原文:http://www.cnblogs.com/linxiyue/p/3908623.html 2.7之后python不再对optparse模块进行扩展,python标准库推荐使用argparse ...

  3. linux,centOS,用LNMP搭建wordpress,更新固定连接--全流程

    下午到晚上的时间,买了个linux服务器,用的centOS系统,遇到各种问题! 1.用putty,ssh到vps后,根据网上命令,一步步下载并安装,具体步骤可以看一下网上教程,LNMP.org站上的教 ...

  4. dedecms如何快速删除跳转的文章(记得清空内容回收站)

    网站内容更新多了,有些页面修改了,这时其他相关页面也要做相应的调整,不然可能会出现404错误,那么dedecms如何快速删除跳转的文章呢?下面就随ytkah一起操作一下吧 如上图所示,在“核心”(标示 ...

  5. 006-springboot2.0.4 配置log4j2,以及打印mybatis的sql

    一.pom配置 普通项目 <!-- log4j2 --> <dependency> <groupId>org.apache.logging.log4j</gr ...

  6. 如何调用另一个python文件中的代码

    模块的搜索路径 模块的搜索路径都放在了sys.path列表中,如果缺省的sys.path中没有含有自己的模块或包的路径,可以动态的加入(sys.path.apend)即可.下面是sys.path在Wi ...

  7. 测试人员需要了解的sql知识(基础篇)

    这是第一篇关于数据库的,本着详细的原则,基础的还是不能放过,还是那句话,有问题,欢迎指出! ------------------------------------------------------ ...

  8. HDU1180:诡异的楼梯(bfs+优先队列)

    http://acm.hdu.edu.cn/showproblem.php?pid=1180 Problem Description Hogwarts正式开学以后,Harry发现在Hogwarts里, ...

  9. Appium-Python-Client安装

    官网是这个:https://pypi.org/project/Appium-Python-Client/#files 下载下来后是这样的文件不知道怎么安装: 不用下载,直接这样就可以 了~~ 安装后导 ...

  10. Bootstrap 网格系统(Grid System)的工作原理 - 媒体查询

    媒体查询 媒体查询是非常别致的"有条件的 CSS 规则".它只适用于一些基于某些规定条件的 CSS.如果满足那些条件,则应用相应的样式. Bootstrap 中的媒体查询允许您基于 ...