晓看天色暮看云
  • near_me
    首  页
  • view_week
    分  类
    keyboard_arrow_down
    layers
    页  面
    keyboard_arrow_down
  • description 文  章
    35
  • textsms 评  论
    0
  • vincent
    Array和ArrayList的区别

    access_time
    brush 415个字
    whatshot 106 ℃

    长度的区别

    • Array是数组,声明好长度之后,其长度就已经固定
    • ArrayList底层是用数组实现的,但是ArrayList的长度是可变的,初始容量为10,在每次添加时,如果发现空间不足的话,就会扩容,会创建一个长度是原来的1.5倍的新数组,为什么是1.5倍?

      • 我们也可以了解到, 为什么ArrayList每次扩容会 扩容到原来的 1.5 倍 , 但为什么不扩容到 1.2 或者 2 倍呢 , 因为 1.2 未免扩容空间太小 , 而 2 倍则扩充的空间太大 ,所以权衡之下 , 采用扩容1.5倍的做法

    存放数据的区别

    • Array除了可以存放对象类型的数据之外,还可以存放基本数据类型。
    • 而ArrayList只可以存放对象类型的数据,因为它的类在定义时已经时针对Object的子类做了泛型约束。如果想要存放基本数据类型的数据,可以存放基本数据类型的包装类的数据

    使用方法的区别

    • Array数组只能通过数组下标来对指定的元素进行变更
    • 而ArrayList在Array的基础上增加了很多方法。比如add,allAll,remove,removeAll,contains

    效率上的区别

    • 因为ArrayList的底层是Array,所以ArrayList的效率自然比不上Array的效率。

    类型安全

    • ArrayList是类型安全的,因为它支持泛型,泛型允许编译器检查ArrayList中的存储的所有对象类型是否正确,而数组不支持泛型,它是通过抛出ArrayStoreException来提供运行时类型检查。

    迭代

    • ArrayList提供了很多迭代方式
    • Array只能用for,while,for循环的增强和do-while来遍历数组。

    #如无特别声明,该文章均为 vincent 原创,转载请遵循 署名-非商业性使用 4.0 国际(CC BY-NC 4.0) 协议,即转载请注明文章来源。
    #最后编辑时间为: 2023 年 02 月 01 日





    关于 DreamCat

    主题名称:DreamCat | 版本:2.8.221001(LTS)

    主题开发:HanFengA7 | TeddyNight | Dev-Leo | CornWorld | WhiteBearcn | DFFZMXJ

    Designed by HanFengA7 Power by Typecho

    Copyright © 2015-2025 by LychApe All rights reserved!

    加我的QQ
    加我的微博
    加我的支付宝
    加我的微信