Some of java code reader notes

Read a little source, very shallow kind, something that is very interesting, record it.

Nature 1.ArrayList is 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);
        }
    }

  

Nature 2.HashSet a HashMap

  public HashSet() {
        map = new HashMap<>();
    }

  

3.String the nature of the final type 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 and StringBuilder are inherited from AbstractStringBuilder

public final class StringBuffer
    extends AbstractStringBuilder
    implements java.io.Serializable, CharSequence


public final class StringBuilder
    extends AbstractStringBuilder
    implements java.io.Serializable, CharSequence

 

The main difference 5.StringBuffer in StringBuffer and StringBuilder inside a lot Synchronize operation, StringBuilder inside did not. Is the former general said thread-safe.

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

  

 

Guess you like

Origin www.cnblogs.com/zhizhiyin/p/11687540.html