Shaluグプタ:
どのようにされたStringBuilder
不変の文字列割り当ての問題を回避するために実装しますか?
StringBuilder aliasA = new StringBuilder("a");
StringBuilder dot = new StringBuilder(".");
Clausula clause1 = new Clausula(aliasA.append(dot).append("id").toString());
Clausula clause2 = new Clausula(aliasA.append(dot).append("name").toString());
TJクラウダー:
使用することによりchar
、配列を。あなたは、JDKのソースでこれを見ることができます。JDK 1.8(1私は便利のためのソースを持っている)で、StringBuilder
上に構築されたAbstractStringBuilder
データを保持するためにこれを使用しています。
char[] value;
int count;
(カロルDowbeckiは言う JDK 9は「時々 」使用するbyte
代わりにchar
、私は彼を疑う理由はない:-))
count
どのくらいのクラスを伝えvalue
、アレイ内だけで使用可能なスペース対実際のデータです。それはで始まりchar[16]
必要に応じて再割り当てとコピー(あなたが必要とするかもしれないどのような立場事前にそれを指示しない限り)。
それだけであなたが呼んで文字列を作成しtoString
使用して、String(char[],int,int)
コンストラクタ(またはおそらく受け入れて1 byte[]
実際に使用されている配列の内容の一部のコピーを作成するために、時にはJDK9を):
public String toString() {
// Create a copy, don't share the array
return new String(value, 0, count);
}