一. 0.5132 默认是double类型
二. 接口被public修饰
三. new ArrayList(20): 注意: 20是集合中的"容量",并不是集合具体的长度, 扩容0次.
总结:ArrayList在扩容的同时,也需要进行集合的移位操作(对ArrayList集合底层的数组进行重新排序)
=jdk8前:
在创建ArrayList集合时,首先创建一个长度为10的集合.
1.当添加的元素个数超出集合的长度10时,进行第一次扩容,扩容因子是0.5
新集合的长度(15)= 旧集合的长度+ 旧集合的长度*0.5
3.当添加的元素个数大于15时,进行第二次扩容,扩容因子是0.5
新集合的长度(22)= 旧集合的长度+ 旧集合的长度*0.5
按照上述规律,当添加的元素个数大于集合的长度时,会进行扩容.
=jdk8后:
在创建ArrayList集合时,首先创建一个空的集合.
1.当首次添加元素时,集合第一次扩容到集合的长度为10
2.当添加的元素个数超出集合第一次扩容的长度时,进行第二次扩容,扩容因子是0.5
新集合的长度(15)= 旧集合的长度+ 旧集合的长度*0.5
3.当添加的元素个数大于15时,进行第三次扩容,扩容因子是0.5
新集合的长度(22)= 旧集合的长度+ 旧集合的长度*0.5
按照上述规律,当添加的元素个数大于集合的长度时,会进行扩容.
四: 静态内部类和普通内部类
/**
* "宿主类":DemoStaticclassAndGenericclass
* 1.
* 静态内部类一般不依赖宿主类,
* 一般不使用宿主类的定义的变量和方法(加载顺序的问题)
* 使用场景: 一般情况用于测试,对于开发者来说基本不写.
* 2.普通的内部类需要依赖宿主类存在,可以使用宿主类的变量和方法.
* 注意:在创建匿名内部类对象时,需要对类中的变量进行final修饰
*/
public class DemoStaticclassAndGenericclass {
public static String name="AAA";
//普通内部类
class A{
public void test(){
name="abc";
}</