String
In Java werden Strings als Objekte vom Typ String behandelt. Die String-Klasse befindet sich im Paket java.lang, das standardmäßig von allen Programmen automatisch importiert wird.
Methoden zum Erstellen von String-Objekten:
String s1 = "java"; String s2 = new String(); String s3 = new String("Java");
Unveränderlichkeit von Java-Strings
String-Objekte können danach nicht mehr erstellt werden werden erstellt. Das Ändern ist unveränderlich. Die sogenannte Änderung erstellt tatsächlich ein neues Objekt und zeigt auf einen anderen Speicherbereich.
Wenn Sie eine Zeichenfolge benötigen, die geändert werden kann, können Sie StringBuffer oder StringBuilder verwenden.
Jedes Mal, wenn eine neue Zeichenfolge generiert wird, wird ein neues Objekt generiert. Auch wenn der Inhalt der beiden Zeichenfolgen gleich ist, ist er beim Vergleich mit „==“ „falsch“. Um zu vergleichen, ob die Inhalte gleich sind, sollten Sie die Methode „equals()“ verwenden.
Der Konstantenpool in Java wird verwendet, um Daten in kompilierten Klassendateien zu speichern, die während der Kompilierung ermittelt wurden.
package cn.test;public class Demo12 { public static void main(String[] args) { String s1 = "java";//先检查字符串常量池中是否有"java"字符串,如果有则直接指向,如果没有就在字符串常量池中添加"java"字符串并指向它,所以这种方式创建字符串时最多创建一个对象,或者不创建对象 String s2 = "java";//s2直接指向字符串常量池中的"java" String s3 = new String("java");//在堆内存申请一块内存存储字符串"java",s3指向其内存块对象,同时检查字符串常量池中是否有"java"字符串,如果没有就添加字符串"java"到常量池中,所以new String()有可能创建两个对象 String s4 = new String("java"); System.out.println(s1 == s2); System.out.println(s1 == s3); System.out.println(s3 == s4); s1 = "欢迎来到" + s1; System.out.println(s1); System.out.println(s3.equals(s4)); } }
Ausführungsergebnisse:
wahr
falsch
falsch
Willkommen bei Java
wahr
Häufig Verwendete Methoden der String-Klasse
Beispiel 1:
String fileName = "HelloWorld.java"; String email = "xiaoli@163.com"; // 判断.java文件名是否正确:合法的文件名应该以.java结尾 int index = fileName.lastIndexOf('.'); String prefix = fileName.substring(index+1); if ( index > 0 && prefix.equals("java")) { System.out.println("Java文件名正确"); } else { System.out.println("Java文件名无效"); } // 判断邮箱格式是否正确:合法的邮箱名中至少要包含"@", 并且"@"是在"."之前 int index2 = email.indexOf('@'); int index3 = email.indexOf('.'); if (index2 != -1 && index3 > index2) { System.out.println("邮箱格式正确"); } else { System.out.println("邮箱格式无效"); } String str = "boo:and:foo"; String[] arr = str.split(":"); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]); }
String str = "boo:and:foo"; String[] arr = str.split(":"); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]); }
Ausführungsergebnis:
Der Java-Dateiname ist korrekt
Das E-Mail-Format ist korrekt
booandfoo
Beispiel 2:
String str = "abcd阿"; byte[] b = str.getBytes(); for (int j = 0; j < b.length; j++) { System.out.print("[" + b[j] + "]"); }
Laufergebnis:
[97][ 98][99] [100][-80][-94]
Hinweis: 1 Byte entspricht 8 Bits. Bei der GBK-Codierung benötigt 1 chinesischer Zeichenspeicher 2 Bytes und 1 englischer Zeichenspeicher 1 Wort. Abschnitt
Beispiel 3:
String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd"; // 出现次数int num = 0; // 循环遍历每个字符,判断是否是字符 a ,如果是,累加次数for ( int i = 0;i < s.length(); i++ ) { // 获取每个字符,判断是否是字符a if ( s.charAt(i) == 'a' ) { // 累加统计次数 num++; } } System.out.println("字符a出现的次数:" + num);
Laufergebnis:
Anzahl der Vorkommen des Zeichens a: 8
StringBuilder-Klasse
Die String-Klasse ist veränderbar und viele temporäre Variablen werden generiert, wenn Zeichenfolgen häufig manipuliert werden. Dieses Problem kann durch die Verwendung von StringBuilder oder StringBuffer vermieden werden . Sie sind grundsätzlich ähnlich, der Unterschied besteht darin, dass StringBuffer Threadsicher ist, sodass die Leistung etwas höher ist. Daher wird zum Erstellen eines String-Objekts mit variablem Inhalt im Allgemeinen die StringBuilder-Klasse bevorzugt.
StringBuilder str2 = new StringBuilder("java");
Allgemeine Methoden der StringBuilder-Klasse:
Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung von Strings in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!