Comment est-constructeur String Java mis en œuvre?

Abhis:

Je traversais le code source Java String, trouvé un CTOR où j'ai quelques doutes:

public String(String original) {
    this.value = original.value;
    this.hash = original.hash;
}

Je compris que l' original est agit comme littéral String(avec guillemets) , mais pas en mesure de comprendre comment est java / jvm calculé original.valuecomme charArray. Quelle est la « valeur » ici ?? si la valeur est chartableau , alors comment la .valuefonction / champ est calculée ???

Joop Eggen:

Chaîne par la conception contient du texte Unicode, de sorte que tous les scripts linguistiques peuvent être combinés. Pour que la mise en œuvre contient un tableau (nom du champ value), où chaque caractère est deux octets valeur UTF-16.

Vous avez rencontré l'un et AFAIK seul point stupide dans les classes Java.

Le montre constructeur de copie est insensée, comme des chaînes sont des objets immuables, et ils peuvent être partagés par une simple affectation. Il est un fossil de l'héritage de C, peut - être en association avec cordes interner.

Pour faire une copie est insensée. Cela est aussi pour le marché intérieur chartableau, qui peut en effet être attribué par référence. (Pas très conséquente.)

Ainsi, les spectacles suivants inexpérimentés utilisation de java:

String s = new String(t);

Avec les nouvelles versions de Java, la valeur d'une chaîne peut effectivement être un tableau d'octets dans un codage, et par conséquent les caractères sont paresseusement fournis.


A propos littéraux de chaîne:

Les chaînes littérales sont stockées dans une structure de données dans un fichier .class appelé le pool constant . Stocké est comme UTF-8 octets. La machine virtuelle Java ClassLoader assure que la chaîne est chargée sous forme de chaîne.

Les importations de final static Stringconstantes sont copiées dans la piscine constante, et ne sont peut - classe d' origine apparaît plus comme étant importés de. La tenue constante de chaîne dans une autre classe peut exiger faire manuellement une construction propre, car il peut ne plus exister une dépendance de classe.

Je suppose que tu aimes

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