Java基础知识简单总结(一)

1.final,finally和finalize之间的区别;

          final关键字意为最终,可修饰类、属性以及方法;

          在修饰类时表示该类为最终类不能被继承;

          在修饰方法时为固定方法即不可被修改;

         在修饰属性时为常量即该变量不可改变;

         Finally通常是与try搭配使用,在try执行完后都会经过fianlly语句块;

          Finalize的用法是在启动GC垃圾回收的调用,一般使用new关键字创建的对象最终都会被finalize()方法调用回收;

2.static关键字;

          static意为静态的意思,它可以修饰属性、方法;

         修饰属性的时候为类属性,在没有被保护的情况下可以直接被外部类通过类名.属性调用,同理修饰方法时也是如此;

         同一个类中,静态方法里不能调用非静态方法和非静态变量;而相反却可以,原因是静态变量或方法在创建的时候已经被加载,在非静态方法里可以直接调用;

        构造方法,代码块和静态代码块之间的执行顺序是:静>代>构

3.常用的集合类:

List接口下的实现类:ArrayList和LinkedList:

ArrayList数组列表,有序可重复,内部通过Array实现,查询快,删除和添加慢,线程不安全;

LinkList双向链表,前后元素有指针作用,顺序读取快,随机读取慢,为此查询慢但增删快,线程也不安全;

Vector可以实现可增长的对象数组,vector的大小可以根据需要增大或缩小,以适应创建Vector后进行添加或移除项的操作;

Map接口的实现类HashMap,TreeMap和LinkedHashMap:

HashMap为常用的map类,无序,它里面存的key-value键值对,键唯一,可为null;底层是entry数组存储key-value,每一个键值对都创建了一个Entry实体,而Entry类时一个单向链接表,具有指针指向性,解决了Hash冲突问题,线程不安全;

TreeMap也为Map接口实现的类,利用红黑树实现key-value,可排序,而二叉树是一种自平衡二叉树查找树;具体可以查看别的资料;

LinkedHashMap继承了HashMap所有特性,但又它自己的双向链表结构,保留了元素的插入顺序;

Set接口的实现类HashSet和TreeSet:

HashSet是基于HashMap实现的集合,对HashMap做了一些封装;HashSet底层是链表的形式保存,有序无重复;

TreeSet是基于TreeMap实现的,有序无重复,支持2种排序,自然排序和提供的Comparator进行排序;

4.接口和抽象类的区别:

接口和抽象类的出现其实面向对象里多态性,两者都需要别的类来实现或继承;

接口里只声明方法,定义的变量只能是静态的常量,接口不能实例化,接口可以多继承,是设计的结果,主要是抽象功能;

抽象类用abstract修饰的类,也不能实例化,但是可以有非抽象方法的实现,是重构的结果,主要是抽象类别;

5.线程池:

线程池是一种多线程的处理形式,处理过程中将任务提交到线程池进行处理;主要是解决服务器的资源消耗和高并发问题,因为平常创建线程时,需要创建多个线程来处理一个或多个任务,并且一个县城只能处理一个任务,在执行完任务后就会销毁,这样会消耗大部分的内存;而线程池的作用则是减少了创建和销毁线程的次数,每个工作的线程都会被重复使用,从而达到了效益最大化;

线程池一般在执行任务的时候会提交给核心线程池创建线程,当线程数量已经大于核心线程数时会将线程存放于缓冲队列,当缓冲队列满了但是最大线程数还没满的时候就会再次创建线程,当最大线程数也满了的时候,就会拒绝执行任务,此时会抛出一个拒绝执行异常;接下来就是尝试拒绝策略;

6.线程:

简单来说线程就是一条执行路径,当分配一个任务的时候,会找到当前一个线程来执行该任务,它是进程的一个执行流,是CUP调度和分配的最小单位;为此可知,一个进程是由多个线程组成,当线程的数量增加到一定数量了也就成了多线程;

多线程的实现方式,四种,常用的有两种;

  1. 通过继承Thread类执行里面的run方法来实现多线程;
  2. 通过实现Runnable接口并执行里面的run方法来实现多线程;
  3. 通过实现Callable接口并执行里面的call方法实现多线程;
  4. 通过创建线程池的方法来实现多线程;
  5. 前面两种启动线程都是通过对象.start()方式进行调用;

7.==与equals之间的区别:

1)==是可以进行基本数据类型之间的比较,equals不可以;

2)==是比较两个对象是否指向同一个引用,而equals不仅可以比较两个对象是否指向同一个引用,还有根据类的属性重写equals方发进行对象比较;

3)==比较String对象时两个变量是否指向同一个对象的引用,而equals比较多是两个变量的值是否相等;

8.Collection和Collections之间的区别:

Collection是集合类的上层接口,即使List和Set的父接口,里面包含了一些集合的基本操作;

Collections是集合的一个工具类,封装了集合的相关方法,如排序和序列化;

9.Wait和sleep的区别:

1.wait是object的方法,sleep是Thread的方法;

2.wait会释放锁,也就是会让出资源,加入到等待队列中,sleep不会释放锁,不会让出资源;

3.wait在对象调用notify方法时,会进入到对象锁定池中等待进入运行状态,sleep不需要唤醒,会在其睡眠结束后重启进入运行状态;

 

闲来总结一下,不喜勿喷,望提出批评!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值