6.对象的序列化以及对于多态,IO,异常等问题的复习
2013-08-15 13:34
274 查看
1. 对象的序列化和反序列化
|-- 将对象中的数据,永久性存储到硬盘上,序列化
|-- java.io.ObjectOutputStream
|-- 将对象中的数据,从硬盘中读取出来,反序列化
|-- java.io.ObjectInputStream
|-- 静态不能被序列化,静态成员不属于对象,属于类,对象的共享数据
|-- 关键字 transient 表示这个成员不能被序列化
2. 序列化时的版本号问题
stream classdesc serialVersionUID = -988868886131056286,
local class serialVersionUID = -6766111752016261338
serialVersionUID = -604860213171062212,
local class serialVersionUID = -988868886131056286
|-- 当对象发生改变时,但是对于对象中的功能没有影响
|-- 此时没有必要从新去写序列化文件,直接读取就可以
|-- 自定义对象版本号,如果没有自定义过版本号,JVM会给我计算一个
|-- 如果我们定义了版本号,则JVM不会在计算版本号了
|-- Serializable 接口中复制 static final long serialVersionUID = 42L;
3. 编程思想
|-- 经过学习,项目,训练,总结,处理问题,慢慢建立起来的
|-- String方法,熟练,一说功能,知道方法名
|-- 把问题细化,成多个小问题
|-- 解决小问题的过程中
|-- 处理这个问题,需要用到什么对象
|-- 具体的功能,使用对象中的什么方法
|-- 模拟equals,使用了Java提供的功能
|-- 项目实训
|-- 功能分析,用户需求
|-- 业务能力
|-- 将学的东西组合起来使用,完成这个项目
4. 多态
|-- 父类或者接口的引用指向自己的子类对象
|-- 指挥对象做事情,可以指挥具有共性的对象做事情,共性的对象是接口或父类
|-- 哪些环节用到了多态
|-- Object类
|-- equals(Object o)//参数是哪个对象我不确定,我能确定这些对象的共性内容,Object
|-- Object o = new 子类();
|-- 异常
catch(Exception e)//Exception是异常的顶层类,这个体系中最共性的内容
throws Exception e'
|-- String类
equals()
|-- 多线程
|-- new Thread(Runnable接口的实现类对象)//确定的是Runnable接口,这个共性内容
|-- 集合
|-- add(Object o)
|-- InputStreamReader(IntputStream o)
Fu f = new Zi();
f.
编译看左,运行看左
编译看左边,运行看右--非静态方法法
|-- 多态实主板
|-- 可以无限的扩展板载设备
|-- 没有必要操作具体的某一个设备,操作他们的共性内容就可以了,就是USB接口
use(new 设备)
use(USB u){ u.open();u.close(); }
|-- 不明确子类的时候,不操作子类,操作这些子类的共性内容,可能是抽象类,可能是接口
抽象类或接口 抽 = new 不确定的子类()
抽.方法()
5. 异常
|-- 编译异常
|-- 调用了抛异常的方法,调用者没处理
|-- 运行异常
|-- RuntimeException及其子类这些异常,是不能发生的,一但发生,程序必须停止
|-- 自定义异常
|-- 继承Exception或者RuntimeException
|-- 调用了抛异常的方法,try 或者throws
|-- 自定的方法,考虑到是否会出现异常,如果实现,声明出来,告诉调用者
6. 集合
|-- 集合就是存储对象
|-- 可变长度
|-- List
|-- ArrayList<数据类型> 数组结构,可变长度,查询块,增删慢*****
集合调用add(对象)
for(数据类型 变量 : 集合){}
Iterator<数据类型> 变量 = 集合.iterator();
while(变量.hasNext()){
数据类型 变量 = 变量.next();
}
|-- LinkedList几乎不常用
|-- Vector 郁郁而终了
|-- Set
|-- 不重复,无下标,无序
|-- HashSet,TreeSet
|-- HashSet,存储的对象需要覆盖hashCode和equals
|-- TreeSet 对存储的对象,自然顺序的排序
|-- 对象自身排序,实现Comparable接口
|-- TreeSet具备排序功能,自定义比较器(class) 实现Comparator
|-- 基本不用
|-- Map双列集合
|-- HashMap和HashSet很像
存储数据库中的数据
|-- TreeMap和TreeSet很像
|-- Properties
|-- 和IO配合,实现读取配置文件运行
|-- 集合中的其他方法 Connection中的方法,add iterator
|-- Map中的方法 put get ketSet entrySet
7. IO流
|-- FileInputStream 字节读取流
read(字节数组)
|-- FileOutputStream 字节的写出流
writer(字节数组)
|-- 会复制文件,效率,带缓冲 Buffered
|-- FileReader 字符读取流
BufferedReader readLine
|-- FileWriter 字符写出流
BufferedWriter write newLine
|-- File对象
|-- 构造方法比较重要
|-- 创建文件夹,和创建文件 mkdir mkdirs createNewFile
|-- 获取功能 listFile 返回是File[] , 递归操作的时候用,使用这个方法
|-- File对象和IO流结合使用,单及目录复制,重要掌握
|-- Properties 非常重要
|-- getProperties
|-- setProperties
|-- load
|-- store
|-- 集合IO配合使用,后期配合反射使用
|-- 对象的序列化,反序列化,面试的时候,会让你写一个序列化反序列化实例
8. 基础班面试的时候
|-- 数组排序
|-- 运算符的 3>2?3:5.5 s=s+1
|-- 什么是面向对象
|-- static,类中共享数据,方法没有用到对象特有数据的时候,用静态修饰
|-- static function 多态中静态方法的运行结果,父类的
|-- Object问题,Object中的equals 和 == 区别
|-- Map是Collection的子类吗 不是
|-- HashMap和HashTable的区别
线程安全的是table 不安全的是HashMap
HashMap存储null值和 null键
|-- 你常见的异常有哪些
空指针异常,数组下标越界,字符串下标越界,下标越界,类型转换异常,IO异常, 数字格式异常
|-- 你常用类有哪些
String Object ArrayList System Arrays Exception
FileInputStram FileOutputStram FileReader FileWriter
Properties StringBuilder
|-- 多线程的状态图
被创建,运行,死亡,冻结,临时阻塞
|-- 看看买票的实例
|-- 看看同步的原理
|-- 死锁代码必须会写
|-- sleep方法和wait方法的区别
|-- sleep方法定义在Thread类
|-- wait方法定义在Object类
|-- sleep指定时间,线程睡眠的时间,时间到会醒来,执行sleep方法的线程在睡眠时不释放锁
|-- wait需要被唤醒
4000
,执行wait方法的线程,释放所,被唤醒后,必须重新获取锁
|-- wait notify notifyAll 为什么写在、Object中,为什么不写在Thread中
|-- 同步的原理,依赖的是同步锁,锁是对象,哪个对象不一定,所有的对象都具备等待和唤醒功能
|-- 非静态同步锁是this
|-- 等待,唤醒这个两个状态,必须依赖锁
synchronized(this){
this.wait();
}
final finally finalize
|-- 将对象中的数据,永久性存储到硬盘上,序列化
|-- java.io.ObjectOutputStream
|-- 将对象中的数据,从硬盘中读取出来,反序列化
|-- java.io.ObjectInputStream
|-- 静态不能被序列化,静态成员不属于对象,属于类,对象的共享数据
|-- 关键字 transient 表示这个成员不能被序列化
2. 序列化时的版本号问题
stream classdesc serialVersionUID = -988868886131056286,
local class serialVersionUID = -6766111752016261338
serialVersionUID = -604860213171062212,
local class serialVersionUID = -988868886131056286
|-- 当对象发生改变时,但是对于对象中的功能没有影响
|-- 此时没有必要从新去写序列化文件,直接读取就可以
|-- 自定义对象版本号,如果没有自定义过版本号,JVM会给我计算一个
|-- 如果我们定义了版本号,则JVM不会在计算版本号了
|-- Serializable 接口中复制 static final long serialVersionUID = 42L;
3. 编程思想
|-- 经过学习,项目,训练,总结,处理问题,慢慢建立起来的
|-- String方法,熟练,一说功能,知道方法名
|-- 把问题细化,成多个小问题
|-- 解决小问题的过程中
|-- 处理这个问题,需要用到什么对象
|-- 具体的功能,使用对象中的什么方法
|-- 模拟equals,使用了Java提供的功能
|-- 项目实训
|-- 功能分析,用户需求
|-- 业务能力
|-- 将学的东西组合起来使用,完成这个项目
4. 多态
|-- 父类或者接口的引用指向自己的子类对象
|-- 指挥对象做事情,可以指挥具有共性的对象做事情,共性的对象是接口或父类
|-- 哪些环节用到了多态
|-- Object类
|-- equals(Object o)//参数是哪个对象我不确定,我能确定这些对象的共性内容,Object
|-- Object o = new 子类();
|-- 异常
catch(Exception e)//Exception是异常的顶层类,这个体系中最共性的内容
throws Exception e'
|-- String类
equals()
|-- 多线程
|-- new Thread(Runnable接口的实现类对象)//确定的是Runnable接口,这个共性内容
|-- 集合
|-- add(Object o)
|-- InputStreamReader(IntputStream o)
Fu f = new Zi();
f.
编译看左,运行看左
编译看左边,运行看右--非静态方法法
|-- 多态实主板
|-- 可以无限的扩展板载设备
|-- 没有必要操作具体的某一个设备,操作他们的共性内容就可以了,就是USB接口
use(new 设备)
use(USB u){ u.open();u.close(); }
|-- 不明确子类的时候,不操作子类,操作这些子类的共性内容,可能是抽象类,可能是接口
抽象类或接口 抽 = new 不确定的子类()
抽.方法()
5. 异常
|-- 编译异常
|-- 调用了抛异常的方法,调用者没处理
|-- 运行异常
|-- RuntimeException及其子类这些异常,是不能发生的,一但发生,程序必须停止
|-- 自定义异常
|-- 继承Exception或者RuntimeException
|-- 调用了抛异常的方法,try 或者throws
|-- 自定的方法,考虑到是否会出现异常,如果实现,声明出来,告诉调用者
6. 集合
|-- 集合就是存储对象
|-- 可变长度
|-- List
|-- ArrayList<数据类型> 数组结构,可变长度,查询块,增删慢*****
集合调用add(对象)
for(数据类型 变量 : 集合){}
Iterator<数据类型> 变量 = 集合.iterator();
while(变量.hasNext()){
数据类型 变量 = 变量.next();
}
|-- LinkedList几乎不常用
|-- Vector 郁郁而终了
|-- Set
|-- 不重复,无下标,无序
|-- HashSet,TreeSet
|-- HashSet,存储的对象需要覆盖hashCode和equals
|-- TreeSet 对存储的对象,自然顺序的排序
|-- 对象自身排序,实现Comparable接口
|-- TreeSet具备排序功能,自定义比较器(class) 实现Comparator
|-- 基本不用
|-- Map双列集合
|-- HashMap和HashSet很像
存储数据库中的数据
|-- TreeMap和TreeSet很像
|-- Properties
|-- 和IO配合,实现读取配置文件运行
|-- 集合中的其他方法 Connection中的方法,add iterator
|-- Map中的方法 put get ketSet entrySet
7. IO流
|-- FileInputStream 字节读取流
read(字节数组)
|-- FileOutputStream 字节的写出流
writer(字节数组)
|-- 会复制文件,效率,带缓冲 Buffered
|-- FileReader 字符读取流
BufferedReader readLine
|-- FileWriter 字符写出流
BufferedWriter write newLine
|-- File对象
|-- 构造方法比较重要
|-- 创建文件夹,和创建文件 mkdir mkdirs createNewFile
|-- 获取功能 listFile 返回是File[] , 递归操作的时候用,使用这个方法
|-- File对象和IO流结合使用,单及目录复制,重要掌握
|-- Properties 非常重要
|-- getProperties
|-- setProperties
|-- load
|-- store
|-- 集合IO配合使用,后期配合反射使用
|-- 对象的序列化,反序列化,面试的时候,会让你写一个序列化反序列化实例
8. 基础班面试的时候
|-- 数组排序
|-- 运算符的 3>2?3:5.5 s=s+1
|-- 什么是面向对象
|-- static,类中共享数据,方法没有用到对象特有数据的时候,用静态修饰
|-- static function 多态中静态方法的运行结果,父类的
|-- Object问题,Object中的equals 和 == 区别
|-- Map是Collection的子类吗 不是
|-- HashMap和HashTable的区别
线程安全的是table 不安全的是HashMap
HashMap存储null值和 null键
|-- 你常见的异常有哪些
空指针异常,数组下标越界,字符串下标越界,下标越界,类型转换异常,IO异常, 数字格式异常
|-- 你常用类有哪些
String Object ArrayList System Arrays Exception
FileInputStram FileOutputStram FileReader FileWriter
Properties StringBuilder
|-- 多线程的状态图
被创建,运行,死亡,冻结,临时阻塞
|-- 看看买票的实例
|-- 看看同步的原理
|-- 死锁代码必须会写
|-- sleep方法和wait方法的区别
|-- sleep方法定义在Thread类
|-- wait方法定义在Object类
|-- sleep指定时间,线程睡眠的时间,时间到会醒来,执行sleep方法的线程在睡眠时不释放锁
|-- wait需要被唤醒
4000
,执行wait方法的线程,释放所,被唤醒后,必须重新获取锁
|-- wait notify notifyAll 为什么写在、Object中,为什么不写在Thread中
|-- 同步的原理,依赖的是同步锁,锁是对象,哪个对象不一定,所有的对象都具备等待和唤醒功能
|-- 非静态同步锁是this
|-- 等待,唤醒这个两个状态,必须依赖锁
synchronized(this){
this.wait();
}
final finally finalize
相关文章推荐
- 黑马程序员 java基础复习三之对象初始化,多态和异常等
- (转)关于java中的一些IO以及对象的可序列化
- 黑马程序员_IO_file对象以及对象序列化
- AJAX JSON中日期类型DateTime格式化的序列化自定义对象以及自定义类型参数的问题处理
- Java对象序列化乱码以及字符集的小问题
- 面向对象以及捕捉异常需要注意的问题
- Java的对象序列化以及文件IO处理
- 对象反序列化时,抛出java.io.StreamCorruptedException: invalid type code: AC异常
- 存储两次序列化对象,读取报错问题 java.io.StreamCorruptedException: invalid type code: A
- 黑马程序员——java之IO体系中File类、编码问题、对象序列化
- Java的对象序列化以及文件IO处理
- Java对象序列化追加的问题,以及Java的读取多个对象的问题解决方法。
- Java对象序列化追加的问题,以及Java的读取多个对象的问题解决方法。
- JAVA 多态和异常处理作业——动手动脑以及课后实验性问题
- Java的对象序列化以及文件IO处理
- java.io 序列化 总结Serializable 和 Externalizable 的区别与联系,以及输出后的乱码问题
- 18天Java学习---Java的对象序列化以及文件IO处理
- java IO(三):数据操作流、合并流、回退流、对象序列化、字符编码问题、压缩流
- [零散篇]Java学习笔记---Java的对象序列化以及文件IO处理
- 对象反序列化异常原因:java.io.InvalidClassException