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不知道怎么写,明天老师讲一下吧。

标签

评论

this is is footer