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. Docker基本命令与使用 —— Docker镜像与仓库(二)

    一.查看和删除镜像 1.Docker Image 镜像 容器的基石 层叠的只读文件系统 联合加载(union mount) (存储位置 /var/lib/docker) docker info 2.列 ...

  2. grpc protobuf

    1.ProtoBuffer是google的一款非常高效的数据传输格式框架 2.一个方法仅能接受一个参数 3.对于定义的message,每个值都有一个唯一的number类型的数字,根据官方文档的解释:它 ...

  3. Spring Data 介绍 (一)

    简介 Spring Data是什么 Spring Data是一个用于简化数据库访问,并支持云服务的开源框架.其主要目标是使得对数据的访问变得方便快捷 Spring Data JPA能干什么 可以极大的 ...

  4. idea导出war包并在tomcat上部署

    生成war包 (一)进入项目配置页面 然后到达: (二)选择 设置好路径 然后apply (三)生成 然后再指定的目录就可以看见war包了. 部署到tomcat上 (一)将war包拷贝到tomcat的 ...

  5. Kafka性能

    基准测试Apache Kafka:每秒写入2百万(在三台便宜的机器上) 核心的数据枢纽一定是高效的,可预测的,并且容易扩展.Kafka能够做到在普通的硬件上支撑每秒百万次写入. Kafka的数据模型非 ...

  6. Celery配置Redis数据库保存Return结果状态

    使用windows版本 1.于GitHUB下载https://github.com/ServiceStack/redis-windows Window版本,到路径: 2. 运行路径下:D:\redis ...

  7. SQLCE数据工具(Flyhoward Ltd SDF Viewer)

    SDF Viewer sdf数据库创建编辑查看 官方下载地址  http://www.flyhoward.com/Download_SDF_Viewer.aspx 用户名:www.cr173.com注 ...

  8. Spark2.x学习笔记:Spark SQL程序设计

    1.RDD的局限性 RDD仅表示数据集,RDD没有元数据,也就是说没有字段语义定义. RDD需要用户自己优化程序,对程序员要求较高. 从不同数据源读取数据相对困难. 合并多个数据源中的数据也较困难. ...

  9. [js]js中原型的继承

    js继承01 思路: 单例/工厂/构造函数--演进到原型 搞清原型结构 原型继承 模拟系统原型继承 实现自己的继承 观察原型继承特点 演进到原型链这一步 //单例模式: 防止变量名冲突: // 思路: ...

  10. 【Flask】关于Flask的request属性

    前言 在进行Flask开发中,前端需要发送不同的请求及各种带参数的方式,比如GET方法在URL后面带参数和POST在BODY带参数,有时候又是POST的表单提交方式,这个时候就需要从request提取 ...