6.对象的序列化以及对于多态,IO,异常等问题的复习

来源:互联网 发布:ftp服务器默认端口 编辑:程序博客网 时间:2024/06/09 13:16
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需要被唤醒,执行wait方法的线程,释放所,被唤醒后,必须重新获取锁
     
  |-- wait notify  notifyAll 为什么写在、Object中,为什么不写在Thread中
     |-- 同步的原理,依赖的是同步锁,锁是对象,哪个对象不一定,所有的对象都具备等待和唤醒功能
     |-- 非静态同步锁是this 
     |-- 等待,唤醒这个两个状态,必须依赖锁  
     synchronized(this){
       this.wait();
     }
     
     final finally finalize