您的位置:首页 > 其它

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐