之前一直认为只有数组才会出现ArrayIndexOutOfBoundsException数组下标越界异常,而ArrayList就算为空,ArrayList.get(0)也是会返回null。今天忽然发现,ArrayList也会抛越界异常IndexOutOfBoundsException,细心的同学可能发现这两个异常还是有区别的。

ArrayList下标越界异常

特意测试了一下数组与ArrayList,并记录下来:

1.数组在它的容量范围内,取值不会抛异常,返回null,只有不在容量分为内取值才会抛越界异常ArrayIndexOutOfBoundsException。

数组在它的容量范围内,取值不会抛异常

数组下标越界异常

2.ArrayList就算初始化了容量,但当取得下标没有元素时也会抛异常IndexOutOfBoundsException。当我们查看ArrayList的get方法时会发现,当获取的下标大于或等于size,则会抛出IndexOutOfBoundsException异常。

ArrayList的get方法源码

下标大于或等于size,抛出异常

3.ArrayList中维护着一个数组,如果不是这里限制了,应该是跟数组一样,在它的容量范围内,取值不会抛异常。

ArrayList中维护着一个数组

ArrayList的get方法源码

ArrayList的get方法最终是数组取值

4.ArrayList.get(-1)不会触发前面的IndexOutOfBoundsException异常,但是也不在数组容量范围内,会抛出了跟数组下标越界一样的异常ArrayIndexOutOfBoundsException。

ArrayList.get(-1)

Docker步步实践

目录文档:

①Docker简介

②基本概念

③安装Docker

④使用镜像:

⑤操作容器:

⑥访问仓库:

⑦数据管理:

⑧使用网络:

⑨高级网络配置:

⑩安全:

⑪底层实现:

⑫其他项目:

外链图片转存中…(img-2QoClwsZ-1623622389560)]

⑫其他项目:

[外链图片转存中…(img-5EGyFcDO-1623622389560)]

有需要完整版源码+笔记的朋友点击这里免费获取

深入学习Java:关于List下标越界源码分析相关推荐

  1. idea 线程内存_Java线程池系列之-Java线程池底层源码分析系列(一)

    课程简介: 课程目标:通过本课程学习,深入理解Java线程池,提升自身技术能力与价值. 适用人群:具有Java多线程基础的人群,希望深入理解线程池底层原理的人群. 课程概述:多线程的异步执行方式,虽然 ...

  2. idea 线程内存_Java线程池系列之-Java线程池底层源码分析系列(二)

    课程简介: 课程目标:通过本课程学习,深入理解Java线程池,提升自身技术能力与价值. 适用人群:具有Java多线程基础的人群,希望深入理解线程池底层原理的人群. 课程概述:多线程的异步执行方式,虽然 ...

  3. 死磕 java集合之ArrayDeque源码分析

    问题 (1)什么是双端队列? (2)ArrayDeque是怎么实现双端队列的? (3)ArrayDeque是线程安全的吗? (4)ArrayDeque是有界的吗? 简介 双端队列是一种特殊的队列,它的 ...

  4. Ceph 学习——OSD读写流程与源码分析(一)

    消息从客户端发送而来,之前几节介绍了 客户端下 对象存储.块存储库的实现以及他们在客户端下API请求的发送过程(Ceph学习--Librados与Osdc实现源码解析 . Ceph学习--客户端读写操 ...

  5. 【死磕 Java 集合】— LinkedTransferQueue源码分析

    [死磕 Java 集合]- LinkedTransferQueue源码分析 问题 (1)LinkedTransferQueue是什么东东? (2)LinkedTransferQueue是怎么实现阻塞队 ...

  6. 死磕Java集合之BitSet源码分析(JDK18)

    死磕Java集合之BitSet源码分析(JDK18) 文章目录 死磕Java集合之BitSet源码分析(JDK18) 简介 继承体系 存储结构 源码解析 属性 构造方法 set(int bitInde ...

  7. java arraydeque_死磕 java集合之ArrayDeque源码分析

    问题 (1)什么是双端队列? (2)ArrayDeque是怎么实现双端队列的? (3)ArrayDeque是线程安全的吗? (4)ArrayDeque是有界的吗? 简介 双端队列是一种特殊的队列,它的 ...

  8. Java的wait()、notify()学习三部曲之一:JVM源码分析

    原文链接:https://blog.csdn.net/boling_cavalry/article/details/77793224 综述 Java的wait().notify()学习三部曲由三篇文章 ...

  9. java bufferedwrite_Java BufferedWriter BufferedReader 源码分析

    一:BufferedWriter 1.类功能简介: BufferedWriter.缓存字符输出流.他的功能是为传入的底层字符输出流提供缓存功能.同样当使用底层字符输出流向目的地中写入字符或者字符数组时 ...

  10. Java集合:Hashtable源码分析

    1. 概述 上次讨论了HashMap的结构,原理和实现,本文来对Map家族的另外一个常用集合HashTable进行介绍.HashTable和HashMap两种集合非常相似,经常被各种面试官问到两者的区 ...

最新文章

  1. php 一行代码解决二维数组去重
  2. ORACLE SQL语句总结2
  3. linuex查看繁忙_如何用九条命令在一分钟内检查Linux服务器性能?
  4. snmp 获取 虚拟机硬盘_服务器出故障了怎么办?SNMP告警七步走
  5. 通过pycharm启动django
  6. Qt Designer手册
  7. JS正则表达式验证账号、手机号、电话和邮箱
  8. 中位数及带权中位数问题(转)
  9. Framework4.0 IIS7下urlrewriter设置问题
  10. java restlet 教程_Restlet 2.0 边学边写(五)Restlet的POST、PUT和DELETE
  11. android packages/apps 加入工程,深入安卓Package Manager和Package Installer
  12. 阿泰,水晶报表--push样式模板
  13. 推荐 :你要的用户画像实践来了!
  14. excel表格xlsx解密方法,忘记excel表格xlsx密码怎么办?
  15. matlab怎么复数相位,怎么求复数相位
  16. 华为笔记本linux usb启动,华为MateBook D(2018) BIOS设置u盘启动教程
  17. 这个治脱发的思路,望采纳
  18. 干货!毫米波雷达超强解读
  19. SpringBoot + laypage分页 + 模糊查询
  20. C# Word Excel Could not load file or assembly ‘office, Version=15

热门文章

  1. 基于ZigBee和STM32的智能家居控制系统的设计与实现(四)
  2. 中国Linux云计算行业发展前景及趋势分析
  3. java设计按月每天签到_java微信签到功能实现:java做的一个简易的微信签到系统的案例...
  4. 如何建立一套完整的DCS系统?
  5. jquery实现的网页计数器
  6. OLAP和OLTP比较
  7. 常用转义字符例如amp的含义
  8. OkHttpClient GET请求工具类
  9. 广东迅视资管 阻碍携号转网,阻碍的是什么
  10. 确定电气间隙和爬电距离