代码1:
List<Object> list = new ArrayList<Object>();
System.out.println(list.get(0));
如上的代码抛出 IndexOutOfBoundsException
代码2 :
List<Object> list = new ArrayList<Object>();
list.add(null);
System.out.println(list.get(0));
返回null;
ArrayList不传参数时,默认初时化的数组为10个,对象的数组初时化的时候默认值本来就是null,为什么一个代码1会返回异常呢?
后来看了下源代码,原来get的时候,还需要对size进行判断,当你执行添加的时候,size+1,当执行删除操作时,size-1。
size 变化只和塞入和删除操作有关。
分享到:
相关推荐
1、初始化做了哪些事儿 2、第一次开辟的空间有多少?那初始化时指定开辟空间长度是否更有利于内存资源节省 3、扩容是在什么时候扩的,达到的阈值是多少?初始申请的空间与扩容阈值之间的关系,围绕第二次扩容阈值与...
5. **集合框架**:Java集合框架是存储和管理对象的重要工具,包括List、Set、Map接口及其实现类如ArrayList、LinkedList、HashSet、HashMap等。 6. **IO流**:Java的输入输出流系统允许程序读写文件、网络数据。...
以上是Java面向对象编程的一些基本概念,通过解决孙卫琴女士教程中的课后思考题,学习者可以更好地理解和应用这些知识。解答集"answer"应详细阐述了这些问题的解题思路和实现方法,对于深入学习和复习Java面向对象...
Collection接口代表单个对象的序列,包括ArrayList、LinkedList、HashSet和TreeSet等。ArrayList基于数组实现,提供快速的随机访问,而LinkedList则适合频繁进行插入和删除操作。HashSet保证元素的唯一性,TreeSet则...
在本次实验中,我们主要关注了三个主要的集合接口:Set、List和Map,以及它们的一些常见实现类。 1. **Set接口**:Set接口代表了一个不允许有重复元素的集合。实验中提到了两个主要的实现类:HashSet和TreeSet。...
5. **集合框架**:掌握ArrayList、LinkedList、HashSet、HashMap等集合类的使用,理解它们之间的区别以及何时选择哪种类型的集合。 6. **IO流**:学习输入/输出流(IO流)的概念,包括文件操作、对象序列化和网络...
##### 思考 1. **输出结果分析**:由于线程的调度是不确定的,因此每次运行程序的结果可能不同。输出结果展示了各个线程的启动、睡眠以及结束的过程。 2. **线程运行一致性**:由于线程的调度取决于操作系统,所以...
【Java语言教学的思考】 Java语言作为一门广泛应用于软件开发的高级编程语言,其教学方法和工具选择对于学习效果至关重要。本文将从多个角度探讨如何提高Java教学质量和效率。 首先,选择适合教学的Java开发工具是...
以下是根据标题、描述和标签提炼的一些关键知识点: 1. **面向对象编程基础**:面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,基于“对象”的概念,强调数据和操作数据的方法相结合。Java...
而ArrayList是基于动态数组实现的,在预知数据量大小或者需要快速随机访问元素的情况下,ArrayList表现更好。 ListIterator是Iterator的扩展,提供了更多的功能。它允许双向遍历List,并且可以使用add()、remove()...
这篇压缩包中的文件“计算机软件Java编程特点及其技术的思考.pdf”很可能详细探讨了Java语言的特性和技术应用,我们将基于这些信息进行深入的讨论。 首先,Java的特点之一是其面向对象的设计理念。Java语言基于类,...
ArrayList的底层原理 HashMap的底层原理 iava单例模式详解 JAVA的内存结构 java队列 Java基础思考之数据传递 JAVA内存泄漏详解 java序列化方式 java中实现多态的机制 string常量池和intern韩雅茹
3. **集合框架**:熟悉ArrayList、LinkedList、HashSet、HashMap等集合类的实现原理和使用场景,以及它们之间的区别。理解并发情况下集合的安全性和并发集合类,如ConcurrentHashMap。 4. **异常处理**:理解异常的...
"疯狂是有方法的,但恐怕只有我能看到"这句话暗示了作者可能在尝试一些不常见的编程实践或者创新的解决方案,这对于我们深入理解Java语言的灵活性和潜在可能性具有启发意义。 首先,Java是一种广泛使用的面向对象的...
【大厂面试题总结】JavaSE...ArrayList的底层原理 HashMap的底层原理 iava单例模式详解 JAVA的内存结构 java队列 Java基础思考之数据传递 JAVA内存泄漏详解 java序列化方式 java中实现多态的机制 string常量池和intern
在阅读题目时,先自我思考一下:thinking_face:。然后再点击题目即可查看答案或百度。 测试篇 01.白盒和黑盒测试的方法有哪些? 黑盒测试的测试方法有:等价类划分、边界值分析法、猜错法、随机数法、因果图。 白盒...
2. 分析比较:对比不同集合类的性能和特点,引导学生思考何时选择何种集合。 3. 内存模型模拟:使用图形化工具或伪代码解释JMM如何影响集合的并发操作。 4. 实验验证:设计实验,让学生观察并发操作集合时可能出现的...
《用Java思考》是一本经典的Java编程教材,其作者Bruce Eckel通过深入浅出的方式引导读者理解Java语言的核心概念和编程思维方式。在这个名为"thinking_in_java"的仓库中,包含了书中所提出的各种问题和练习,旨在...
1.3 集合框架:Java集合框架包括接口(如List、Set、Map)和实现这些接口的类(如ArrayList、HashSet、HashMap),为数据存储和操作提供了丰富的选择。 二、Java开发环境与工具 2.1 JDK与JRE:Java Development ...
1. **Java集合框架**:包括ArrayList、LinkedList、HashMap等数据结构,为存储和操作数据提供了丰富的接口和类。 2. **多线程**:Java内置对多线程的支持,可以创建并行执行的任务,提升程序性能,如Thread类和...