8.24. javaSE复习

复习{
  常用类: 
    Object: 所有类的父类 
        常用方法:  toString(); 打印对象信息
                   wait();  让当前线程进入等待池,
                   notify();  让当前线程进入 锁池,去抢锁的标记
                        notifyAll(); 多线程 用于线程之间的通讯
                        finalize(); 用垃圾回收 ,服务其他线程线程,一般具有自动基金
                                 生命周期的能力; GC, 守护线程运行在后台,
                                 什么时候结束生命周期不确定,自己任务执行完就可以
                                 
                        clone();  实现Cloneable 接口,重写clone方法
                             目的创建当前对象的 副本 , 
                        
                        equals(); 

  java中创建对象的方式有几种?
    1.new Person();
    2.clone();
    3.反序列化 InputStream  :  物理文件-----> 内存的过程 ObjectInputStream
                    FileInputStream();
                    
                    new ObjectInputStream(new FileInputStream(new File("路径")));
     
    4.反射  newInstance();

String: 
   String类是final修饰的类,被称为不可改变类,
      每当我们使用一个+ "   拼接 字符串  , 他都会产生一个新的字符串对象
     不能被继承
     
   StringBuffer sb = new StringBuffer(); 默认16 线程安全
   StringBuiler sb = new StringBuilder(); 线程不安全
    
    ByteBuffer,ShortBuffer,IntBuffer, LongBuffer,FloatBuffer,Double,CharBuffer
    
    nio 非阻塞IO 
      Buffer 换从
      Channel 通道   FileInputStream     ips.getChannel()
    
   ByteBuffer bb = ByteBuffer.allocate(1024); 堆内 内存
    ByteBuffer.allocateDirect(); 堆外内存
    
   
   append(); 拼接
   reverse(); 字符串反转
   insert(); 插入
   ......
   判断HashMap 什么时候扩容;
        元素个数  > 容量 * 0.75;
   
 Date: 日期
      java.util.Date
      java.sql.Date
      
 SimpleDateFormat:  辅助格式化 
      format(Date date);  返回值 String
      parse(String); 返回值Date
      
 Time:     时间
      new Time(date.getTime());
 Timestamp: 时间戳   年月日 时分秒
     new Timestamp(date.getTime());

 Arrays:  sort(); asList(); 
 Random:  随机数       nextInt(边界值)+偏量值;
 Scanner:  nextInt(); nextLine(); next();
 Math: PI ,abs(), pow(); sqrt();  max() , min(); 
 包装类:     Integer, Character, Byte,Short, Long, Float, Double, Boolean
     Integer:  
         valueOf(String str); Integer
         parseInt(String str); int   "A" NumberFormatException
         toBinaryString();
     
//有缓存区 -128 - 127会存储在这个缓存区中,公用一个内存空间
        //所以 == 是 true , 如果超过了-128 ,127 那么就是new Integer == false
Integer a = 127;
Integer b = 127;

System.out.println(a == b);  //true         
}
-----------------------------------------------------------------
异常: 
  1. 异常体系: 
             Throwable: 类  
                   Error: 
                        VirtualMachineError:    
                              StackOverflowError: 栈溢出   方法的相互调用      Stack
                              OutOfMemoryError: 内存泄露    需要运行的程序没有可用的资源
                   Exception:    
                      RuntimeException:
                           |-- ArthmeticException
                           |-- IndexOutOfBoundsException
                                         |-- ArrayIndexOutOfBoundsException
                                         |-- StringIndexOutofBoundsExcpetion
                           |-- NullPointerException
                           |-- NumberFormatException
                           |-- ClassCastException
                           |-- IllegalArgumentException
                           |-- ClassNotFoundException
                      IOException: 
                           |-- FileNotFoundException
                           
  2.处理异常的方式:
          |-- 捕获 try...catch(){}
          
               try...catch
               try...finally
               try...catch...finally
          
          try(
            
             存放需要关闭的资源
            
          ){
          
          }catch(){
          
          }finally{
           
          }
      
      finally 一定执行吗? 
           正常情况下 会执行, 什么情况下不执行, System.exit(0); 
           在 进入try 块儿前 出现异常
           
        如果在finally 块儿中添加return 关键字会出现什么情况     
            |-- 覆盖方法返回值
            |-- 异常丢失
          
          |-- 抛出
               throw new Exception(); 方法上可以加 throws
自定义 异常: 
     继承Exception
              getMessage(); 打印异常名字
              printStackTrace(); 打印异常信息,

---------------------------------------------------------------------------------
IO流: 
  IO:
      字节流:
          InputStream:     
            ByteArrayInputStream: 字节数组流
           FileInputStream: 文件流
               read();
               read(byte[] b);
               read(byte[] b ,int off, int len);
           ObjectInputStream: 对象流   反序列化
                readObject();
          OutputStream:
          ByteArrayOutputStream:
          FileOutputStream:
              write(int a);
              write(byte[] b);
              write(byte[] b,int off, int len);
          ObjectOutputStream:  序列化
                  writeObject();
                  
File:
  1.学会文件夹的 遍历
  2.文件夹的删除

      字符流:
           Reader:
               CharArrayReader
               BufferedReader: 字符流的缓冲区
                    readLine();
               InputStreamReader : 字节流转换为字符流的桥
           
           Writer:
             CharArrayWriter:
             BufferedWriter:
                  newLine();
                  flush();
                  close();
             OutputStreamWriter:
            PrintWriter 打印流:
                 append();
                 println();
                 print();
                 write();
  NIO:
-----------------------------------------------------------------------------
集合体系: 
 Iterable:      具有迭代的能力
   |-- Collection 接口
         |--List:   有序,可重复,允许存储null值 ,
                ArrayList:  实现原理是Object[] 对象数组  ,线程不安全
                LinkedList:  双向链表实现, 没有下标  get(int index);
                Vector: 线程安全
                    |-- Stack
         
        ArrayList和LinkedList区别:
              ArrayList底层是 对象数组实现,必须通过下标来获取元素,所以查询快,添加,删除慢
              LinkedList底层是双向链表,没有下标,所以长训慢,添加和 删除 速度快
         
         |--Set: 
                HashSet:  底层实现是HashMap
                TreeSet:  底层实现TreeMap ,有序的Set集合,
                                    想要存储自定义对象 到TreeSet怎么办
                                     |-- 实现Comparable接口  重写compareTo(Object);
                                     |-- 实现Comparator接口  重写compare(Object obj1, Object obj2);
         
         |--Queue: 单向队列           特点:FIFO
              |-- Deque:  双向队列  
                   
                    LinkedList: 有四个角色, 双向链表, 栈, 单向队列  , 双向队列
 Map:
    HashMap: 线程不安全  , 允许存储null值
         原理: 
             当我们向HashMap中存储数据时 put(key, value);    
            程序会根据key值 计算出hash值 ,会向指定位置存储,如果这个位置没有数据直接存储
            如果这个位置有数据,就使用equals方法比较两个  key值是否相等,
            如果相等,就替换value值,如果不相等,就以单项链表的形式向下存储
            jdk1.7是数组+ 链表
            jdk1.8是数组+链表 + 红黑树
           如果单项链表的长度 大于 8 就会切换到红黑树
           如果红黑树元素个数 小于 6 就会切换会到 链表
            
             哈希冲突,哈希碰撞 
        
    Hashtable:  线程安全  , 不允许存储null值
    TreeMap:  key 有序的 ,跟value值无关,key值不允许存储null值
          
     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值