1. Objekte erstellen
Für direkte String-Konstanten in Java-Programmen verwendet die JVM einen String-Pool, um sie zu speichern. Wenn eine String-Direktkonstante zum ersten Mal verwendet wird, legt die JVM sie zum Zwischenspeichern in den String-Pool ab. Unter normalen Umständen werden String-Objekte im String-Pool nicht durch Garbage Collection erfasst. Wenn das Programm die Zeichenfolge erneut verwenden muss, kann die Referenzvariable direkt auf die vorhandene Zeichenfolge in der Zeichenfolge verweisen, ohne eine neue Zeichenfolge neu erstellen zu müssen. Das mit der neuen Operation erstellte String-Objekt zeigt nicht auf das Objekt im String-Pool, aber Sie können es mit der Methode intern() auf das Objekt im String-Pool verweisen.
public class StringDemo1 { public static void main(String[] args){ String str1 ="abc"; String str2 ="abc"; String str3 =new String("abc"); System.out.println(str1==str2);//true System.out.println(str1==str3);//false } }
FAQ
String str3 =new String("abc");
Wie viele Objekte wurden erstellt?
Antwort: Wie viele Objekte wurden von zwei
String str ="ab"+"cd";
erstellt?
Antwort: Eins. „ab“ und „cd“ sind Konstanten, die im String-Pool platziert werden. Daher wird nur ein abcd-String-Pool erstellt und der String abcd im String-Pool gespeichert.
public class StringDemo1 { public static void main(String[] args){ String str1 ="ab"; String str2 ="cd"; String str3 ="ab"+"cd";//创建对象并加入字符串池 String str4 =str1+str2; String str5 =str1+"cd"; System.out.println(str3==str4);//false System.out.println(str3==str5);//false } }
Wie aus dem obigen Code ersichtlich ist: Nur String-Objekte, die mit Anführungszeichen erstellt wurden und Text enthalten, können zum String-Pool hinzugefügt werden. Für den „+“-Verbindungsausdruck, der das durch das neue erstellte neue Objekt enthält -Methode werden neue Objekte generiert, die nicht zum String-Pool hinzugefügt werden.
Aber es gibt eine Situation, die unsere Aufmerksamkeit erfordert:
public class StringDemo1 { private final static String str1 ="ab"; private final static String str2 ="cd"; public static void main(String[] args){ String str3 ="ab"+"cd";//创建对象并加入字符串池 String str4 =str1+str2; String str5 =str1+"cd"; System.out.println(str3==str4);//true System.out.println(str3==str5);//true } }
Warum ist das so? Der Grund dafür ist, dass es sich um Konstanten handelt. Sein Wert ist fest und kann daher zur Kompilierungszeit bestimmt werden.
Ändern Sie den obigen Code leicht und sehen Sie, was passiert.
public class StringDemo1 { private final static String str1 ; private final static String str2; static{ str1="ab"; str2="cd"; } public static void main(String[] args){ String str3 ="ab"+"cd";//创建对象并加入字符串池 String str4 =str1+str2; String str5 =str1+"cd"; System.out.println(str3==str4);//false System.out.println(str3==str5);//false } }
Obwohl str1 und str2 als Konstanten definiert sind, werden ihnen sofort Werte zugewiesen, bevor der Wert von s berechnet wird. Wann und welcher Wert ihnen zugewiesen wird, sind Variablen, also die Eigenschaften und Variablen sind gleich. Kann nur zur Laufzeit erstellt werden.
2. String-Methode
Methode abrufen
•int length()
•char charAt(int index)gemäß Position, um ein bestimmtes Zeichen zu erhalten
•int indexOf(int ch) gibt die Position zurück, an der ch zum ersten Mal in der Zeichenfolge erscheint
•int indexOf(int ch,int fromIndex) Beginnen Sie mit der durch fromIndex angegebenen Position und rufen Sie ch ab Position des ersten Vorkommens in der Zeichenfolge
•int indexOf(String str)
•int indexOf(String str,int fromIndex)
•int lastIndexOf(int ch)
Beurteilungsmethode
•boolean enthält(String str) Eine weitere Beurteilungsmethode: if(str.index(str)!=-1)
•boolean startetWith(String str)
•boolean endetWith( String str)
•bolean isEmpty(String str)
•boolean equal(String str)
•boolean equalIgnoreCase(String str);
Konvertierungsmethode
•Konvertiert Zeichenarray in string
Konstruktor
1.String(char[] chs)
2.String(char[] chs,offset,count) Zeichen konvertieren Teil des Arrays in konvertieren eine Zeichenfolge.
Statische Methode
1.static String copyValueOf(char[] chs)
2.static String copyValueOf(char[] chs,int offset,int count)
3.static String valueOf(char[] )
4.static String valueOf(char[] chs,int offset,int count)
•String in Zeichen-Array konvertieren
char[] toCharArray
•Zeichen-Array in String konvertieren
•String in Byte-Array konvertieren
Byte[] toBytes
Ersetzungsmethode
String replace(olderStr,newStr)
Cut-Methode
String split(regex)
Teilstring abrufen [Klassifizierung bearbeiten]
String subString(begin)
String subString(begin,end) enthält den Kopf, aber nicht den Schwanz
Konvertieren Sie den String in Groß- und Kleinbuchstaben für Android (10)
String toUpperCase()
String toLowerCase()
Leerzeichen an beiden Enden der Zeichenfolge entfernen
String trim()
Führen Sie eine natürliche Reihenfolge zweier Zeichenfolgen durch. Vergleich von
int CompareTo(String str)
3.String-Übungen
1. String-Flip
public class StringDemo2 { public static void main(String[] args){ String 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. Holen Sie sich den maximal identischen Teilstring
public class StringDemo2 { public static void main(String[] args){ String str1 = "avdkfasjks"; String str2 = "ewavdrtte"; System.out.println(commonMaxSubstring(str1, str2)); } public static String commonMaxSubstring(String str1,String str2){ int len = str1.length(); String str3 = null; outer: //i为子串的长度 for(int i = len;i>0;i--){ //j为子串的脚标 for(int j=0;j<len-i+1;j++){ str3=str1.substring(j,j+i); if(str2.contains(str3)) break outer; } } return str3; } }
Das Obige ist die Einführung von Beispielen für eine detaillierte Erklärung von Java-Strings. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).