La classe String en Java est utilisée très fréquemment, alors voyons de quoi il s'agit ?
String est un objet immuable
La classe java.lang.String utilise la modification finale et ne peut pas être héritée. Toutes les valeurs littérales dans les programmes Java, c'est-à-dire les chaînes entourées de guillemets doubles, telles que "abc", sont implémentées en tant qu'instances de la classe String.
String est une constante et son objet ne peut pas être modifié une fois construit. En d’autres termes, l’objet String est immuable et chaque méthode qui semble modifier la valeur String crée en fait un nouvel objet String pour contenir le contenu de la chaîne modifiée. L'objet String d'origine reste inchangé. L'objet String a des caractéristiques en lecture seule et toute référence pointant vers lui ne peut pas modifier sa valeur. Il n'aura donc aucun impact sur les autres références. Mais les références de chaîne peuvent être réaffectées.
Les chaînes Java utilisent le codage Unicode en mémoire. Tout caractère correspond à un codage de longueur fixe sur deux octets, c'est-à-dire que tout caractère (qu'il soit chinois ou anglais) compte comme un caractère et occupe deux mots. Festival.
Exemple :
public class Immutable { public static String upcase(String s) { return s.toUpperCase(); } public static void main(String[ ] args) { String str1= "Hello World"; System.out.println(str1); //Hello World String str2 = upcase(str1); System.out.println(str2); //HELLO WORLD System.out.println(str1); //Hello World } }
Lorsque str1 est passé à la méthode upcase(), une copie de la référence est en fait transmise. En fait, chaque fois qu'un objet String est utilisé comme paramètre d'une méthode, une référence est copiée et l'objet pointé par la référence reste en réalité dans un seul emplacement physique et n'a jamais été déplacé.
Pool de constantes de chaîne
Le pool de constantes fait référence à certaines données déterminées lors de la compilation et enregistrées dans le fichier .class compilé. Il comprend des constantes dans les classes, méthodes, interfaces, etc., ainsi que des constantes de chaîne. Afin d'améliorer les performances, des chaînes statiques Java (résultats de connexions littérales/constantes/constantes) sont créées dans le pool de constantes, et tentent d'utiliser le même objet et de réutiliser les chaînes statiques. Pour les littéraux de chaîne répétés, la JVM recherchera d'abord dans le pool de constantes et renverra l'objet s'il existe dans le pool de constantes.
Exemple 2 :
public class test1 { public static void main(String[] args){ String str1 = "Hello"; //不会创建新的String对象,而是使用常量池中已有的"Hello", String str2 = "Hello"; System.out.println(str1 == str2); //true //使用new关键字会创建新的String对象 String str3 = new String("Hello"); System.out.println(str1 == str3); //false } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!