目录
抽象类和接口的区别
equals和==的区别
for和增强for的区别
list和set区别
数组和集合的区别
ArrayList和LinkedList的区别
抽象类和接口的区别
抽象类是对一类事物的抽象,将相同的属性和行为提取出来
接口是对不同事物能力的抽象, 实现类可以按照自己的方式来实现这个能力
equals和==的区别
1. ==是运算符, 比较基本数据类型时比较的是值, 比较引用数据类型时比较的是地址
2. equals是Object类中的方法, 基本数据不能调用方法,引用数据类型调用时比较的是地址, 但String重写了equals的逻辑比较字符串中的内容
3. 并不是所有重写了equals方法就能完成比较指定内容, 比如BigDecimal中使用equals方法比较的是字面值, 而不是具体数值, 因此equals方法有时并不适用
BigDecimal中CompareTo方法比较的是具体数值,返回0相同, 返回非0则不同. int result = biOne.compareTo(biTwo);
for和增强for的区别
1. 增强for循环是基于迭代器的, 可以应用所有单列集合+数组的遍历,省略了元素的获取
2. 而for循环只能针对有索引的数组和list实现类进行遍历
3. 增强for循环底层是迭代器, 但由于没有迭代器对象, 则不能进行数组长度的操作 (增删)
4. 普通for循环可以限制循环次数, 而增强for循环只能从头遍历(可用break)
list和set区别
1. List和Set都是Collection接口的实现接口
2. List是有序的, 有索引的概念, 内容可重复
3. Set没有索引概念, 内容不能重复(依赖hashcode和equals判断)
数组和集合的区别
1. 数组的长度是固定的, 集合的长度是可扩展的
2. 数组中既能存储基本数据类型,又能存储引用数据类型; 集合只能存储引用数据类型
3. 数组中没有什么方法可以使用 集合中的方法更丰富
ArrayList和LinkedList的区别
1. ArrayList 和 LinkedList都是List的实现类, 元素有序, 有索引, 可重复
2. ArrayList底层基于数组, LinkedList底层基于双层链表
3. ArrayList查询快, 内存连续, 增删慢 LinkedList增删快, 内存不连续, 查询慢
4. 线程不同步, 不安全, 效率高
1. ==是运算符, 比较基本数据类型时比较的是值, 比较引用数据类型时比较的是地址
2. equals是Object类中的方法, 基本数据不能调用方法,引用数据类型调用时比较的是地址, 但String重写了equals的逻辑比较字符串中的内容
3. 并不是所有重写了equals方法就能完成比较指定内容, 比如BigDecimal中使用equals方法比较的是字面值, 而不是具体数值, 因此equals方法有时并不适用
1. 增强for循环是基于迭代器的, 可以应用所有单列集合+数组的遍历,省略了元素的获取
2. 而for循环只能针对有索引的数组和list实现类进行遍历
3. 增强for循环底层是迭代器, 但由于没有迭代器对象, 则不能进行数组长度的操作 (增删)
4. 普通for循环可以限制循环次数, 而增强for循环只能从头遍历(可用break)
list和set区别
1. List和Set都是Collection接口的实现接口
2. List是有序的, 有索引的概念, 内容可重复
3. Set没有索引概念, 内容不能重复(依赖hashcode和equals判断)
数组和集合的区别
1. 数组的长度是固定的, 集合的长度是可扩展的
2. 数组中既能存储基本数据类型,又能存储引用数据类型; 集合只能存储引用数据类型
3. 数组中没有什么方法可以使用 集合中的方法更丰富
ArrayList和LinkedList的区别
1. ArrayList 和 LinkedList都是List的实现类, 元素有序, 有索引, 可重复
2. ArrayList底层基于数组, LinkedList底层基于双层链表
3. ArrayList查询快, 内存连续, 增删慢 LinkedList增删快, 内存不连续, 查询慢
4. 线程不同步, 不安全, 效率高
1. List和Set都是Collection接口的实现接口
2. List是有序的, 有索引的概念, 内容可重复
3. Set没有索引概念, 内容不能重复(依赖hashcode和equals判断)
1. 数组的长度是固定的, 集合的长度是可扩展的
2. 数组中既能存储基本数据类型,又能存储引用数据类型; 集合只能存储引用数据类型
3. 数组中没有什么方法可以使用 集合中的方法更丰富
ArrayList和LinkedList的区别
1. ArrayList 和 LinkedList都是List的实现类, 元素有序, 有索引, 可重复
2. ArrayList底层基于数组, LinkedList底层基于双层链表
3. ArrayList查询快, 内存连续, 增删慢 LinkedList增删快, 内存不连续, 查询慢
4. 线程不同步, 不安全, 效率高
1. ArrayList 和 LinkedList都是List的实现类, 元素有序, 有索引, 可重复
2. ArrayList底层基于数组, LinkedList底层基于双层链表
3. ArrayList查询快, 内存连续, 增删慢 LinkedList增删快, 内存不连续, 查询慢
4. 线程不同步, 不安全, 效率高


![[Java总结] 一些概念问题(在更新...) [Java总结] 一些概念问题(在更新...)](http://www.mshxw.com/aiimages/31/922075.png)
