关闭

JAVA知识回顾-2(四种引用、HashCode、List实现类的区别、字符的处理、各集合特点)

标签: javahashcodelist引用回顾
364人阅读 评论(0) 收藏 举报
分类:

JAVA知识深度回顾总结-第二天

Java的四种引用,强弱软虚

  • 强引用(StrongReference):即使抛出OOM(OutOfMemory)也不会被回收的对象
  • 软引用(SoftReference):内存不足时才回收该对象(这个特性适合用来实现缓存)
  • 弱引用(WeakReference):gc回收时,不管内存足不足都会回收
  • 虚引用(PhantomReference)
  • 了解与实际运用

HashCode的作用

ArrayList、LinkedList、Vector的区别

  • ArrayList和Vector底层都带有一个Object[]数组,用来保存元素,通过索引访问元素时,只需简单地通过索引访问内部数组的元素;而LinkedList通过一个双向链接的节点列表实现。要通过索引访问元素,你必须查找所有节点,直至找到目标节点。
  • Vector和ArrayList一样是数组实现的,二者的差别在于:Vector是线程安全的,所以性能上不如ArrayList
  • 区别详谈请入

String、StringBuffer与StringBuilder的区别

  • String是创建后不可改变的每次对操作都是对一些对象进行操作,而StringBuffer与StringBuilder是字符串变量,每当我们对它们的字符串操作时都是对一个对象操作。
  • 因上所述我们可以看出用String操作字符串速度慢,因为我们要对多个对象进行操作
  • StringBuilder是线程不安全的,StringBuffer是线程安全的(由此可以判断StringBuilder速度最快,大多数情况下我们是单线程的操作,所以大多数情况下是建议使用StringBuilder而非StringBuffer)

List、Set、MapQueue、Stack的特点和用法

  • List接口对Collection接口的扩展,可以将任意类型放入List容器中,并在需要时获得。常用的实现类是ArrayList、LinkedList,上面介绍了它们的各自特点区别。
  • Set接口也是对Collection接口的扩展,不同于List,不能放入重复的元素,没有下标获取的概念,常用的具体实现类HashSet、TreeSet。HashSet底层是HashMap,能快速定位一个元素,但是你放到HashSet中的对象需要实现hashCode()方法。TreeSet底层是TreeMap,能对放入其中的元素进行排序,元素必须实现Comparable接口,重写compareTo()来实现排序。
  • Map是一种将建对象和值对象进行并联的容器
  • Queue(队列)是先进先出的集合
  • Stack(堆栈)是后进先出的集合

我的感受

  • 知道了软引用(SoftReference)可以有效的处理缓存一类的操作(^o^)/~
  • int hashCode()返回的并不是一定是这个对象的内存地址(不要问我为什么,因为我也不清楚~~(>_<)~~),等有兴趣的时候再去这研究下。
  • ArrayList、Vector底层是数组具有数组的特性,Vector是线程安全的,LinkedList底层是链表具有链表的特性
  • 以后单线程记着多用StringBuilder,这样能提高效率

想说的话

  • 博客坚持写,不管怎样,今后学习了新的东西就在这里记录一下,以便今后回顾,也希望小小笔记能帮助你们
  • 如果内容有什么地方不对,望吐槽,希望大家能一起学习和成长
  • 来一句:世界上唯一不变的就是变化,变化非困难,而是挑战。
1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:12218次
    • 积分:392
    • 等级:
    • 排名:千里之外
    • 原创:28篇
    • 转载:0篇
    • 译文:0篇
    • 评论:5条
    文章分类
    文章存档
    最新评论