Java笔记4

final 加在类或者是方法中,子类分别不能继承和重写

重构:是重写的一种特殊方式,子类与父类的成员方法的返回值、方法名称、参数类型及个数完全相同,唯一不同的是方法实现内容,这种特殊重写方式被称为重构。

 

垃圾回收算法

1.引用计数(被引用一次就计数一次,最后为0的就回收)

缺点:循环引用无用对象,无法识别

2.引用可达法

引用关系制图,跟踪(从上至下去跟踪,看到达不到达的了这个对象)

 

分代的垃圾回收机制

jvm将堆中的内存划分为 eden suvivor  tenured/old空间

1.新的对象放入eden中

2.eden满了以后,不能创建对象,触发垃圾回收机制,将无用对象清理掉,将剩余对象复制放入suvivor中S1,清空eden

(经历垃圾回收算法)

3.eden再次满了,将S1中不能清空的对象存入另一个suvivor中,S2,

4.重复多次(15次)suvivor中没有清理对象,则会复制到old中

5.当old满了,则会触发一个完整的垃圾回收(fullGC)

 

易造成内存泄露的操作

1.创建大量无用对象(String用for连接字符创建了大量String对象)

2.静态集合类的使用(hashmap,vector.list使用易造成泄露,其生命周期与应用程序一致)

3.连接对象(io流,数据库连接对象,网络连接对象)未关闭

4.监听器(书房对象没有删除相应的监听器)

 

内部类

//创建内部类的对象
Face f=new Face();
Nose n=f.new Nose();

Face.Nose n=f.new Nose();

String 与StringBuffer(StringBuilder)区别在于前者是不可变字符串,后者可变。

StringBuffer线程不安全,效率高,StringBuilder线程安全,效率低

StringBuffer sb=new StringBuffer();//其中长度预先创建为16,但可以成两倍加2的速度扩展容度

 

Map

Map中包含HashMap和TreeMap

 

Collection

Collection中包含Set和List

Set中有HashSet和TreeSet

List中有ArrayList和linkedList

 

Collection接口不能直接用,但提供添加数据、删除数据、管理数据的办法,故而其中的Set与List可用

 

List

ArrayList 可实现可变的数组,可保存包括null在内的所有元素,可根据索引位置对集合快速访问,但插入删除速度慢

LinkedList利用链表存储数据,易插入和删除对象,但访问对象速度慢

List<E> list=new ArrayList<>();

List<E> list=new LinkedList<>();

E为存储数据类型

 

Set

Set中不按照特定的顺序排序,仅是将对象加入集合中,但不包括重复对象

Hashset不保证Set的迭代顺序,特别是不保证该顺序恒久不变,允许用null元素

TreeSet实现的Set集合在遍历时按照自然顺序递增排序

 

Map

Map中有key和value相对应

HashMap

TreeMap

 

异常

NullPointerException 空指针异常,之前加上一个判断是否为空

ClassCastException 类型转化异常  instanceof 是不是后者的实例

捕获异常(try,catch,finally)

try 指定一段代码,处理的范围,当其中的任意语句产生异常时就会跳过后面代码,catch对异常处理

finally最终会执行(例如关闭前面打开资源的程序)

catch中填入异常类型(子类异常放上面,不然处理到父类异常时就停止了

public class TestReaderFile{
      public static void main(String[] args){
           try{
               FileReader reader=new FileReader("d:/a.txt");
               char c =(char)reader.read();
               char c2=(char)reader.read();
               System.out.println(""+c+c2);

              }catch(FileNotFoundException e){
                  e.printStackTrace();
              }catch(IOException e){
                  e.printStackTrace();      
              }finally{
                  try{
                     if(reader!=null){
                       reader.close();
                   }
                    }catch(Exception e){  
                  e.printStackTrace(); 
               }
                 
               }
         }

}

执行顺序 1.try catch 给返回值赋值  2.执行finally 3.return

throws异常,谁调用这个函数谁处理

 

子类声明的异常范围不能超过父类声明的范围

1.父类没有声明异常,子类也不行

2.不可抛出原有方法跑出异常类的父类或者上层类

3.跑出的异常类型的树木不可以比原有的方法抛出的还多

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值