20201007_陈宇_
日志
学习总结:
内存:
Java虚拟机对应的在内存中划分了三个区域"方法区","堆区"和"栈区";
方法区:
静态区:存放静态变量
常量池:存放字面量对象
堆:存放实例对象(存放new出来的对象)的属性、数组值
栈:先进后出,每当遇到方法调用时,Java虚拟机就会在栈中划分一块内存成为栈帧,供局部变量(包括及基本类型和引用类型)使用
GC:垃圾回收机制,Runtime提供的gc方法只会建议Java虚拟机进行垃圾回收,但是不保证一定会进行
集合:
java 中针对数组的缺陷,提供了一种比数组灵活、使用方便的接口和类,它们位于 java.util 包,称 为集合框架。
java 中的集合框架主要从三个方面入手:
1.Java.lang.Iterable
2.Collection
3.Map
java.lang.Iterable:
Iterable 接口,凡是实现了此接口的对象都能称为 for-each-loop 的目标
iterator() 方法返回一个类型的迭代器
java.util.Collection:
从类的声明我们可以看到, Collection 接口继承了 Iterable 接口,也就意味着,实现了 Collection 接口的类也间接实现了 Iterable 接口,也就是说它们都能作为 for-each-loop 的循环对象
Collection 是集合层次结构中的根接口。集合表示一组对象,称为其元素。有些集合允许重复 元素,有些则不允许。 有些是有序的,有些是无序的
抽象方法:
Queue (队列):
设计用于在处理之前保留元素的集合。 除了基本的 Collection 操作之外,队列还提供额外的插入,提 取和检查操作
不可以存 null
主要抽象方法
Deque (双端队列):
继承了 Queue ,支持两端元素插入和移除的线性集合
常用抽象方法
Set:
不包含重复元素的集合
抽象方法大多是继承自 Collection 的,所以不做单独说明
常用子类, HashSet 和 TreeSet
List:
有序集合(也称为序列 ),该集合用户可以精确控制列表中每个元素的插入位置
用户可以通过整数 索引(列表中的位置)访问元素,并搜索列表中的元素 List 通常允许重复的元素、允许 null 元素
主要子类, ArrayList 、 LinkedList 、 Vector
Vector:
Vector 类实现了可扩展的对象数组
像数组一样,它包含可以使用整数索引访问的组件。 但是, Vector的大小可以变化
Vector 是同步的,是线程安全的
Vector 继承了 AbstractList 类,实现了 List 接口 默认大小是10,当容量不足时,默认扩容方式是按倍增长
Stack:
Stack 类代表后进先出(LIFO)堆栈的对象, Stack 继承自 Vector 所以它有所有 Vector 中的方法
List集合:
List 是一个有序集合。可以存储一组不唯一、有序的对象、可以存 null
List 在 JDK 9 中新增 of() 方法,作用是返回一个 List 对象, of(E...e) 可以接受传参,但是不能 传 null ,否则会抛出 NullPointerException异常
ArrayList:
ArrayList 是 AbstractList 类的子类,同时实现了 List 接口
ArrayList 不是同步的,也就是说是非线程安全的
ArrayList 内部是使用数组存储数据,也就是说在内存中开辟一个连续的空间,是一个可变的数组, 可以向 ArrayList 中添加不同类型数据,这些数据都将转换 Object 类型存储
1.初始化容量是 10
2.存储数据的对象是 Object[] elementData
3.当容量不足时,扩容1.5倍
ArrayList 中的方法中大部分方法都是实现自 List 接口
注意:contains 方法在判断对象时,对象的类中要重写 equals 方法
Arrays.asList() 方法返回一个只读集合
学习心得:
国庆耍了几天回来好像有一些东西又忘了,今天复习了一下以前的知识,不能学点忘点,国庆的作业也没做,晚上补了5道基础题,后面再找时间把所有的作业全部补起吧。今天学的那个ArrayList自己写remove不知道怎么写,明天老师讲一下吧。
近期评论