数据类型
基本类型:int, bool , float ,double, short ,long, char , byte
对象类型: String , Integer , BigDecimal
String, StringBuffer , StringBuilder 差别
类型 | 可变 | 线程安全 | 备注 |
String | 不可变 | 安全 | 每次更改会产生新的内存地址 |
StringBuffer | 可变 | 安全 | 操作当前内存 |
StringBuilder | 可变 | 不安全 | 操作当前内存 |
Equal与==的区别
==原则:
基本类型:对值进行判断是否相等
对象类型:对引用进行判断是否相等(内存地址)
Equal原则:
基本类型没有equal方法,对象类型才有;对象类型的equal方法本质上与==等效,但许多类重写了equal方法,变成了值判断;
所以使用equal 方法要明确每个类型对equal方法的实现;有些自定义类的判断看是否要重载;
hashCode 与Equal关系
equal相等,hashCode 必定相等;反之hashCode相等,equal不一定相等;
jvm 管理对象的原理是把对象放入hash表中;那两个对象的 hash code相等只表明了两个对象hash值一致,存储在同一条链上,但内容或内存不一定一致,所以有以上结论。
最终如果重写了equal方法,最好也重写一下hashCode方法;
思考:HashCode效果?
传送门:
java 集合
Java Array
固定长度,提供了Arrays工具类型来操作array
Java容器
类型区分:Collection,Map两大类型
Collection
提供 iterator 来遍历,提供Collections工具类型来操作Collection
分类 | 名称 | 线程安全 | 元素有序 | 元素重复 | 备注 |
List | ArrayList | 否 | 是 | 是 |
|
LinkedList | 否 |
| |||
Vector | 是 |
| |||
Stack | 是 | 继承自Vector | |||
Set | HashSet | 否 | 否 | 否 |
|
LinkedHashSet | 否 | ||||
TreeSet | 否 | 是 |
Map
分类 | 名称 | 线程安全 | 元素有序 | 元素重复 | 备注 |
HashMap | HashMap | 否 | 否 | key不可重复;value可重复 |
|
LinkedHashMap | 否 |
| |||
HashTable | HashTable | 是 | 保留类 | ||
TreeMap | TreeMap | 否 | 是(key) |
|
线程安全 :一般情况下都使用java.utils.concurent下的数据类型