1. Créer des objets
Pour les constantes de chaîne directes dans les programmes Java, la JVM utilisera un pool de chaînes pour les enregistrer. Lorsqu'une constante directe de chaîne est utilisée pour la première fois, la JVM la place dans le pool de chaînes pour la mise en cache. Dans des circonstances normales, les objets chaîne du pool de chaînes ne seront pas récupérés. Lorsque le programme doit réutiliser la chaîne, la variable de référence peut pointer directement vers la chaîne existante dans la chaîne sans recréer une nouvelle chaîne. L'objet chaîne créé à l'aide de la nouvelle opération ne pointe pas vers l'objet dans le pool de chaînes , mais vous pouvez utiliser la méthode intern() pour le pointer vers l'objet dans le pool de chaînes.
Copiez le code comme suit :
classe publique StringDemo1 {
public static void main (String[] args){
Chaîne str1="abc";
Chaîne str2 = "abc" ;
Chaîne str3 =nouvelle Chaîne("abc");
System.out.println(str1==str2);//true
System.out.println(str1==str3);//false
}
}
FAQ
Copiez le code comme suit :
Chaîne str3 =nouvelle Chaîne("abc");
Combien d’objets ont été créés ?
Réponse : Deux
Copiez le code comme suit :
Chaîne str ="ab"+"cd";
Combien d’objets ont été créés ? Réponse : Un. "ab" et "cd" sont des constantes placées dans le pool de chaînes. Par conséquent, un seul pool de chaînes abcd est créé et la chaîne abcd est enregistrée dans le pool de chaînes.
Copiez le code comme suit :
classe publique StringDemo1 {
public static void main (String[] args){
Chaîne str1 = "ab" ;
Chaîne str2="cd";
String str3 ="ab"+"cd";//Créer l'objet et l'ajouter au pool de chaînes
Chaîne str4 =str1+str2;
Chaîne str5 =str1+"cd";
System.out.println(str3==str4);//false
System.out.println(str3==str5);//false
}
}
Cela peut être vu à partir du code ci-dessus : seuls les objets String créés avec des guillemets contenant du texte peuvent être ajoutés au pool de chaînes. Pour l'expression de connexion "+" contenant le nouvel objet créé par la nouvelle méthode, le nouvel objet généré par celle-ci le sera. ne pas être ajouté à la chaîne dans le pool.
Mais il y a une situation qui mérite notre attention :
Copiez le code comme suit :
classe publique StringDemo1 {
chaîne statique finale privée str1 = "ab";
chaîne statique finale privée str2 = "cd";
public static void main (String[] args){
String str3 ="ab"+"cd";//Créer l'objet et l'ajouter au pool de chaînes
Chaîne str4 =str1+str2;
Chaîne str5 =str1+"cd";
System.out.println(str3==str4);//true
System.out.println(str3==str5);//true
}
}
Pourquoi est-ce ? La raison est la suivante, pour les constantes. Sa valeur est fixe et peut donc être déterminée au moment de la compilation.
Modifiez légèrement le code ci-dessus et voyez ce qui se passe.
Copiez le code comme suit :
classe publique StringDemo1 {
chaîne statique finale privée str1 ;
chaîne statique finale privée str2 ;
statique{
str1="ab";
str2="cd";
}
public static void main (String[] args){
String str3 ="ab"+"cd";//Créer l'objet et l'ajouter au pool de chaînes
Chaîne str4 =str1+str2;
Chaîne str5 =str1+"cd";
System.out.println(str3==str4);//false
System.out.println(str3==str5);//false
}
}
Bien que str1 et str2 soient définis comme des constantes, des valeurs leur sont immédiatement attribuées avant que la valeur de s ne soit calculée, quand elles sont attribuées et quelle valeur leur est attribuée sont des variables, leurs propriétés sont donc les mêmes que celles des variables. Ne peut être créé qu’au moment de l’exécution.
2. Méthode de chaîne
Obtenir la méthode
•int longueur()
•char charAt(int index) obtient un caractère basé sur la position
•int indexOf(int ch) renvoie la position de la première occurrence de ch dans la chaîne
•int indexOf(int ch,int fromIndex) part de la position spécifiée par fromIndex et obtient la position de la première occurrence de ch dans la chaîne.
•int indexDe(Chaîne chaîne)
•int indexOf(String str,int fromIndex)
•int dernierIndexOf(int ch)
Méthode de jugement
•boolean contain(String str) Une autre méthode de jugement : if(str.index(str)!=-1)
• booléen startWith (String str)
•booléen se termineAvec(String str)
•bolean estEmpty(String str)
• booléen égal (String str)
• booléen égal à IgnoreCase (String str);
Méthode de conversion
• Convertir un tableau de caractères en chaîne
Constructeur
1.String(char[] chs)
2.String(char[] chs,offset,count) convertit une partie du tableau de caractères en chaîne.
méthode statique
1.static String copyValueOf(char[] chs)
2.static String copyValueOf(char[] chs,int offset,int count)
3.string statique valueOf(char[])
4.static String valueOf(char[] chs,int offset,int count)
• Convertir une chaîne en tableau de caractères
char[] versCharArray
• Convertir un tableau de caractères en chaîne
• Convertir la chaîne en tableau d'octets
octet[] en octets
méthode de remplacement
Remplacement de chaîne (olderStr, newStr)
Méthode de coupe
Fractionnement de chaîne (regex)
Obtenir la sous-chaîne[modifier la catégorie]
Sous-chaîne de chaîne (début)
String subString(begin,end) contient la tête mais pas la queue
Convertir la chaîne en majuscules et minuscules Android (10)
Chaîne versUpperCase()
Chaîne versLowerCase()
Supprimer les espaces aux deux extrémités de la chaîne
Garniture de chaîne()
Comparez deux chaînes dans l'ordre naturel
int comparerTo(String str)
3. Exercices de cordes
1. Retournement des chaînes
Copiez le code comme suit :
classe publique StringDemo2 {
public static void main (String[] args){
Chaîne str = "avdkfasjks" ;
reverseMethod_1(str);
}
public static void reverseMethod_1(String str){
for(int i=str.length();i>0;i--){
System.out.print(str.charAt(i-1));
}
}
}
2. Obtenez la plus grande sous-chaîne identique
Copiez le code comme suit :
classe publique StringDemo2 {
public static void main (String[] args){
Chaîne str1 = "avdkfasjks" ;
Chaîne str2 = "ewavdrtte" ;
System.out.println(commonMaxSubstring(str1, str2));
}
chaîne statique publique commonMaxSubstring(String str1,String str2){
int len = str1.length();
Chaîne str3 = nulle ;
extérieur:
//i est la longueur de la sous-chaîne
pour(int i = len;i>0;i--){
//j est la sous-chaîne de la sous-chaîne
pour(int j=0;j<len-i+1;j++){
str3=str1.substring(j,j+i);
si (str2.contient (str3))
briser l'extérieur;
}
}
retourner str3 ;
}
}