Comment un StringBuilder mis en œuvre pour éviter le problème immuable de l'allocation de chaîne?

Shalu Gupta:

Comment un StringBuildermis en oeuvre pour éviter le problème immuable de l' allocation de chaîne?

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 Crowder:

En utilisant un chartableau. Vous pouvez le voir dans la source JDK. Dans 1.8 JDK (celui que je la source à portée de main), StringBuilderest construit sur AbstractStringBuilderqui utilise pour contenir les données:

char[] value;
int    count;

( Karol Dowbecki dit que 9 « parfois JDK » utilisations au bytelieu de char, je n'ai aucune raison de douter de lui :-).)

countdit la classe combien valueest par rapport à des données réelles que l' espace disponible dans le tableau. Il commence avec un char[16]( à moins que vous dire à l' avance quelle capacité vous pourriez avoir besoin) et réaffecte et des copies au besoin.

Il crée uniquement une chaîne lorsque vous appelez toString, en utilisant le String(char[],int,int)constructeur (ou sans doute l' un acceptant byte[]parfois JDK9) pour faire une copie de la partie du contenu du tableau qui sont réellement utilisés:

public String toString() {
    // Create a copy, don't share the array
    return new String(value, 0, count);
}

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=222247&siteId=1
conseillé
Classement