20165211 2017-2018-2 《Java程序设计》第5周学习总结
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个基本步骤:
- 设定输入流的源
- 创建指向源的输入流
- 让输入流读取流中的数据
- 关闭输入流
构造方法
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周学习总结的更多相关文章
- 学号 20175212 《Java程序设计》第九周学习总结
学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
随机推荐
- easyui 特殊操作
--EasyUI - datagrid中单元格里编辑控件的单击事件如何获取当前行的index var rowIndex = $(this).parents('.datagrid-row').attr( ...
- html中一些文字标签
<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>菜鸟 ...
- MongoDB的”存储过程“
使用 db.system.js.insert({_id:"aaa", value:"zzq"}); 这条命令向全局系统的js中添加了一个_id为"aa ...
- 洛谷P2322 最短母串问题 [HNOI2006] AC自动机
正解:AC自动机+最短路 解题报告: 传送门! 这题之前考试考到辣,,,我连题目都没看懂这种傻逼事儿就不要说了QAQ 然后就港正解辣 首先这题可以用dp做?等下写 但是一般来说看到这种,第一反应就,先 ...
- hibernate注解(二)mappedBy
1.双向关系中使用mappedBy避免生成中间表 (1).只有OneToOne,OneToMany,ManyToMany上才有mappedBy属性,ManyToOne不存在该属性: (2).mappe ...
- 【解决】win10 启用系统保护 灰色 不可选 的解决办法
安装Win10后,发现系统保护无法启用.'启用系统保护' 灰色 不可选状态: 搜了一堆解决办法,包括: 1.组策略修改 2.服务启用 3.各种重启 等,不适用. 然后,我把系统预留分区 删了,删了…… ...
- Spring使用AspectJ注解和XML配置实现AOP
本文演示的是Spring中使用AspectJ注解和XML配置两种方式实现AOP 下面是使用AspectJ注解实现AOP的Java Project首先是位于classpath下的applicationC ...
- phpStudy安装
以下一直默认安装 访问地址:http://127.0.0.1/vue/2.html
- VMware Pro v14.0.0 官方版本及激活密钥
热门虚拟机软件VMware Workstation Pro 14.0 全新版本发布,此次更新了诸多客户机操作系统版本,另外完全兼容Wind10创建者更新支持.12.0之后属于大型更新,专门为Win10 ...
- 从jvm来看,scala中的@究竟是个什么鬼?@模式匹配符号(scala 词法分析 语法分析常用)
从jvm来看,scala中的@究竟是个什么鬼? 我也是初步尝试来看jvm的类文件,又是初次来分析@,如不对的地方,请各位指正! 先看一下@ 是个什么? object TestScala { def m ...