读了一点源码,很浅的那种,有些东西觉得很有趣,记录一下。
1.ArrayList的本质是Object[]
public ArrayList(int initialCapacity) {
if (initialCapacity > 0) {
this.elementData = new Object[initialCapacity];
} else if (initialCapacity == 0) {
this.elementData = EMPTY_ELEMENTDATA;
} else {
throw new IllegalArgumentException("Illegal Capacity: "+
initialCapacity);
}
}
2.HashSet的本质是HashMap
public HashSet() {
map = new HashMap<>();
}
3.String的本质是final类型的char[]
private final char value[];
public String() {
this.value = "".value;
}
public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
public String(char value[]) {
this.value = Arrays.copyOf(value, value.length);
}
4.StringBuffer和StringBuilder都继承自AbstractStringBuilder
public final class StringBuffer
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence
public final class StringBuilder
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence
5.StringBuffer和StringBuilder的主要差别在StringBuffer里面由很多Synchronize操作,StringBuilder里面没有。就是一般说的前者线程安全。
StringBuffer:
@Override
public synchronized StringBuffer append(Object obj) {
toStringCache = null;
super.append(String.valueOf(obj));
return this;
}
StringBuilder:
@Override
public StringBuilder append(Object obj) {
return append(String.valueOf(obj));
}
原文:https://www.cnblogs.com/zhizhiyin/p/11687540.html