java的一些代码阅读笔记

读了一点源码,很浅的那种,有些东西觉得很有趣,记录一下。

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));
    }

  

猜你喜欢

转载自www.cnblogs.com/zhizhiyin/p/11687540.html