1、儲存,char字元陣列
private final char value;
2、初始化與複製
可見建立string是傳遞物件的引用,char拷貝陣列的值
public string(string original)
public string(char value)
public string(char value, int offset, int count)
if (count < 0)
// note: offset or count might be near -1>>>1.
if (offset > value.length - count)
this.value = arrays.copyofrange(value, offset, offset+count);
}
3、字串複製
複製當前字串的子串到目標字串
public void getchars(int srcbegin, int srcend, char dst, int dstbegin)
if (srcend > value.length)
if (srcbegin > srcend)
system.arraycopy(value, srcbegin, dst, dstbegin, srcend - srcbegin);
}
4、equals、contentequals
先比較長度,再逐一比較字串中的char是否一致,不一致則直接返回false
public boolean equals(object anobject)
if (anobject instanceof string)
return true;}}
return false;
}public boolean contentequals(charsequence cs)
} else
}// argument is a string
if (cs instanceof string)
// argument is a generic charsequence
char v1 = value;
int n = v1.length;
if (n != cs.length())
for (int i = 0; i < n; i++)
}return true;
}
5、hashcode
字串不一致的hashcode可能一致
public int hashcode()
hash = h;
}return h;
}
hashcode一致的情況
char chars1 = new char ;
char chars2 = new char ;
string str1 = new string(chars1);
string str2 = new string(chars2);
system.out.println(str1.hashcode());
system.out.println(str2.hashcode());
system.out.println(str1.hashcode() == str2.hashcode());
6、jdk8引入的字串合併方法
public static string join(charsequence delimiter, charsequence... elements)
return joiner.tostring();
}
java 原始碼學習1 String
1 計算hashcode方法 public int hashcode hash h return h 假設現在又 abcd 的字串 則h 0 31 a 31 b 31 c 31 d 最後得到的表示式 是 a 31 4 1 b 31 4 2 c 31 4 3 d 可以簡單理解為 計算31進製的資料。這...
原始碼看JAVA 三十九 Deque
deque是雙向佇列,包含queue的全部功能,同時新增了雙向佇列的特有實現 1 在第乙個元素前新增元素 新增失敗丟擲異常 void addfirst e e 2 在最後的位置新增元素 新增失敗丟擲異常 void addlast e e 3 呼叫addfirst方法,新增成功返回true,否則丟擲異...
java執行緒狀態 原始碼淺看
一 thread概念 執行緒是作業系統能夠進行運算排程的最小單位 代表了一條順序的執行流 二 thread流程 1 切換過程 執行緒狀態 new runnable blocked waiting time waiting terminated 流轉圖 每種狀態切換 原始碼上也已經顯示很清楚了 new...