自学
范维尔
这个作者很懒,什么都没留下…
展开
-
String为什么是不可变的
String不可变体现在哪?仔细看jdk中是如何写的。首先,string的底层存储结构为char[]数组,而且是final修饰的,这就意味着,一旦通过构造器初始化,则该数组无法重新指向新的引用。 /** The value is used for character storage. */ private final char value[];这里扩展一下,final修饰类不能被继承,修饰方法不能被重写,修饰变量即为常量。这其中修饰引用数据类型(如对象或数组时),“不可变”指的是对原创 2020-11-03 10:23:52 · 201 阅读 · 0 评论 -
关于ArrayList中扩容的处理
在add方法中,有一段注释为// overflow-conscious code即考虑了溢出情况,那么究竟是为何溢出,以及他是如何处理的呢?仔细阅读源码,了解处理的逻辑add()的基本逻辑,1.判断是否要扩容 2.添加进数组了解几个基本概念集合数组的长度 elementData.length集合元素的个数 size待添加的元素长度(1),待添加的集合长度(num)扩容长度size + 1 size + num以上概念在add(E e) addAll(Collection<? ex原创 2020-10-30 13:34:51 · 182 阅读 · 0 评论