Java学习笔记

Java基础回顾

1.Java中String、StringBuffer、StringBuilder类的区别

(1).String是Java中被final修饰的类,是不可变字符串,如果频繁的对它进行拼接操作会产生很多无用的对象,影响性能。
(2).StringBuffer是为了解决大量拼接字符串时产生很多无用中间对象而提出的一个类,在这个中提供了append和add方法,可以将字符串添加到指定的位置。
(3).StringBuilder与StringBuffer在本质上没有什么区别,唯一的就是StringBuffer是一个线程安全的,正是由于其线程安全,在效率上StringBuilder要不StringBuffer快。
整体来说,操作少量的数据时使用String,单线程操作大量数据(不考虑线程安全)使用StringBuilder,多线程操作大量数据(需要考虑线程安全)使用StringBuffer。

2.ArrayList和LinkedList的区别

(1).从底层数据结构上来说,ArrayList的底层是动态数组;LinkedList底层是链表结构。
(2).对于随机访问和更新数据,ArrayList要优于LinkedList,因为LinkedList在做这些操作过程中需要移动指针。
(3).对于新增和删除数据,LinkedList要优于ArrayList,因为ArrayList要移动数据。

3.ArrayList的源码解析

(1).在ArrayList源码中,可以看到其初始容量为10,
在这里插入图片描述
(2).扩容,在源码中,ArrayList是1.5倍扩容,具体流程就是一个原来数组的长度加上原来数组长度的0.5进行扩容,
在这里插入图片描述
在这里插入图片描述

4.ArrayList和Vector的区别

(1).通过查看两者的源码,Vector类中的主要的方法都是被synchronized关键字修饰,表示同步,即线程安全,而ArrayList类中的方法则不是,因此,相比较而言Vector是线程安全的,ArrayList是线程不安全的,线程同步必然会影响性能。
(2).在扩容上,ArrayList是50%大小扩容,而Vector是成倍扩容。

5.HashMap的源码解析

待更新

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值