1. Support intégré Java pour les chaînes;
La prise en charge dite intégrée signifie que les types de chaînes ne sont pas implémentés à l'aide de pointeurs de char comme C, et le codage de chaîne de Java est conforme aux normes de codage Unicode, ce qui signifie également qu'il n'a pas besoin d'être implémenté à l'aide de classes String et WString comme C ++ à Soyez compatible avec le langage C et la norme Unicode. Java prend en charge les types de chaînes via la classe de chaîne en interne.
Cela signifie: nous pouvons appeler directement la même méthode que l'objet String:
// Vous pouvez appeler directement toutes les méthodes de l'objet String sur "ABC"
int longueur = "abc" .length ();
ainsi que
String abc = new String ("ABC");
int length = abc.length ();
2. La valeur de chaîne en java est constante (constante)
Ce que nous voulons dire ici, une fois le type de chaîne, la valeur ne peut pas être modifiée. String ("def") le "ABC" et "DEF" dans le pool constant stocké dans la machine virtuelle Java.
Le "ABC" dans le code suivant est stocké dans le pool constant, de sorte que les adresses pointées par les variables A et AB sont les mêmes "ABC" dans le pool constant.
La copie de code est la suivante:
classe publique StringTest {
public static void main (String [] args) {
String a = "ABC";
String ab = "ABC";
String abc = new String ("ABC");
System.out.println (AB == A);
System.out.println (a == ABC);
}
}
/ * Sortie du programme:
* vrai
* FAUX
* * /
Alors, comment les chaînes de dynamique et les chaînes variables sont-elles implémentées? Java fournit des classes StringBuffer et StringBuilder pour réaliser cette exigence; StringBuilder et StringBuffer sont-ils implémentés? Il stocke les cordes à travers un tableau de caractères. Ce qui suit est un extrait trouvé à partir du code source qui est livré avec JDK.
3. Encodage des problèmes dans les chaînes.
Deux questions à comprendre ici: comment gérer le codage des chaînes dans les fichiers source? Quel codage les chaînes utilisent-elles lors de la compilation dans les fichiers de classe ou le code s'exécute dans Java Virtual Machine?
Le premier problème est que le codage de chaîne dans le code source dépend de votre éditeur IDE ou Texte. Par exemple, le code suivant est modifié au format de codage GBK, puis l'ouvrez en utilisant le décodage UTF-8 et GBK
// Format de codage GBK, ouvert au format GBK
// Format de codage GBK, ouvert au format UTF-8, brouillé; si le format de codage par défaut du système n'est pas GBK à l'heure
Alors, comment faire face à ce type de problème de codage de code source? La réponse est spécifiée dans le codage d'option de paramètre du compilateur Javac. Le codage par défaut de Windows est généralement GBK (cette valeur peut être obtenue via System.getProperty ("file.encoding")); Utilisez la compilation UTF-8 encoding Javac.
Quel est le codage des chaînes lors de la compilation dans un fichier de classe ou un code lors de l'exécution d'une machine virtuelle Java? Comment le codage du code source? Cela signifie que tant que le compilateur Javac comprend correctement le codage des chaînes dans le fichier de code source, les chaînes du fichier de bytecode d'exécution ou de classe sont indépendantes du format de codage dans le code source. Ici, nous pouvons en outre comprendre le type de char ou la classe de caractères de base en Java. «La longueur des personnages ou des caractères chinois en Java est de 16 bits.
De plus, dans le type de chaîne, nous utilisons également le codage de caractères fixe spécifié pour convertir la représentation et la chaîne binaires sous-jacentes, ce qui signifie que nous pouvons lire correctement le codage GBK, le codage UTF-8 ou d'autres fichiers texte codés ou d'autres convertis de flux d'entrée dans la chaîne correcte en mémoire.
Par exemple, il existe les méthodes suivantes dans la classe String:
Public String (octet [] octets, charme de charme);
octet public [] getBytes (Charset Charset);
Il existe une autre méthode de membre qui doit être prêtée à prêter attention:
octet public [] getBytes ();