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.
Kopieren Sie den Codecode wie folgt:
öffentliche Klasse 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
Kopieren Sie den Codecode wie folgt:
String str3 =new String("abc");
Wie viele Objekte wurden erstellt?
Antwort: Zwei
Kopieren Sie den Codecode wie folgt:
String str ="ab"+"cd";
Wie viele Objekte wurden 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.
Kopieren Sie den Codecode wie folgt:
öffentliche Klasse StringDemo1 {
public static void main(String[] args){
String str1 = „ab“;
String str2="cd";
String str3 ="ab"+"cd";//Erstellen Sie das Objekt und fügen Sie es dem String-Pool hinzu
String str4 =str1+str2;
String str5 =str1+"cd";
System.out.println(str3==str4);//false
System.out.println(str3==str5);//false
}
}
Aus dem obigen Code ist ersichtlich: Nur mit Anführungszeichen erstellte Zeichenfolgenobjekte, die Text enthalten, können zum Zeichenfolgenpool hinzugefügt werden. Für den Verbindungsausdruck „+“, der das von der neuen Methode erstellte neue Objekt enthält, wird das von ihr generierte neue Objekt hinzugefügt nicht zur Zeichenfolge im Pool hinzugefügt werden.
Aber es gibt eine Situation, die unsere Aufmerksamkeit erfordert:
Kopieren Sie den Codecode wie folgt:
öffentliche Klasse StringDemo1 {
private final static String str1 = "ab";
private final static String str2 = "cd";
public static void main(String[] args){
String str3 ="ab"+"cd";//Erstellen Sie das Objekt und fügen Sie es dem String-Pool hinzu
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.
Kopieren Sie den Codecode wie folgt:
öffentliche Klasse StringDemo1 {
private final static String str1;
private final static String str2;
statisch{
str1="ab";
str2="cd";
}
public static void main(String[] args){
String str3 ="ab"+"cd";//Erstellen Sie das Objekt und fügen Sie es dem String-Pool hinzu
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, handelt es sich bei der Zuweisung und dem zugewiesenen Wert um Variablen, sodass ihre Eigenschaften mit denen von Variablen identisch sind. Kann nur zur Laufzeit erstellt werden.
2. String-Methode
Methode abrufen
•int Länge()
•char charAt(int index) ruft ein Zeichen basierend auf der Position ab
•int indexOf(int ch) gibt die Position des ersten Vorkommens von ch in der Zeichenfolge zurück
•int indexOf(int ch,int fromIndex) beginnt an der durch fromIndex angegebenen Position und ermittelt die Position des ersten Vorkommens von ch 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
•Konvertieren Sie ein Zeichenarray in einen String
Konstrukteur
1.String(char[] chs)
2.String(char[] chs,offset,count) wandelt einen Teil des Zeichenarrays in einen String um.
statische Methode
1.statischer String copyValueOf(char[] chs)
2. static String copyValueOf(char[] chs,int offset,int count)
3.statischer String-WertOf(char[])
4. static String valueOf(char[] chs,int offset,int count)
• Konvertieren Sie eine Zeichenfolge in ein Zeichenarray
char[] toCharArray
•Konvertieren Sie ein Zeichenarray in einen String
•Konvertieren Sie einen String in ein Byte-Array
byte[] toBytes
Ersatzmethode
String ersetzen(olderStr,newStr)
Schneidmethode
String-Split (regex)
Teilstring abrufen[Kategorie bearbeiten]
String subString(begin)
String subString(begin,end) enthält den Kopf, aber nicht den Schwanz
String in Groß- und Kleinbuchstaben umwandeln Android(10)
String toUpperCase()
String toLowerCase()
Entfernen Sie Leerzeichen an beiden Enden der Zeichenfolge
String trim()
Vergleichen Sie zwei Zeichenfolgen in natürlicher Reihenfolge
int vergleichenTo(String str)
3. Saitenübungen
1. Saitenwechsel
Kopieren Sie den Codecode wie folgt:
öffentliche Klasse 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 größten identischen Teilstring
Kopieren Sie den Codecode wie folgt:
öffentliche Klasse StringDemo2 {
public static void main(String[] args){
String str1 = "avdkfasjks";
String str2 = "ewavdrtte";
System.out.println(commonMaxSubstring(str1, str2));
}
öffentlicher statischer String commonMaxSubstring(String str1,String str2){
int len = str1.length();
String str3 = null;
äußere:
//i ist die Länge des Teilstrings
for(int i = len;i>0;i--){
//j ist der Teilstring des Teilstrings
for(int j=0;j<len-i+1;j++){
str3=str1.substring(j,j+i);
if(str2.contains(str3))
äußere brechen;
}
}
return str3;
}
}