Heim  >  Artikel  >  Java  >  Erweitertes Tutorial zu Java-Strings

Erweitertes Tutorial zu Java-Strings

巴扎黑
巴扎黑Original
2017-08-09 17:58:101375Durchsuche

Der folgende Editor bringt Ihnen einen Artikel über fortgeschrittene Java-Strings (ein Artikel, den Sie unbedingt lesen müssen). Der Herausgeber findet es ziemlich gut, deshalb werde ich es jetzt mit Ihnen teilen und es allen als Referenz geben. Folgen wir dem Editor und werfen wir einen Blick darauf.

Vorwort

Es gibt drei am häufigsten verwendete Klassen für String-Operationen, nämlich String und StringBuilder . StringBuffer, diese drei Klassen werden im Folgenden ausführlich besprochen ...

String

Die String-Klasse stellt einen String dar, das ist am meisten Grundklasse für Strings und auch die am häufigsten verwendete Klasse. Sie wird hier nicht im Detail vorgestellt.

Konstruktion

neuer String(String str)

neuer String(StringBuilder str)

neuer String(StringBuffer str)

neuer String(byte[] bys,String charsetName ) Konstruiert einen neuen String durch Dekodierung des angegebenen Byte-Subarrays mit dem angegebenen Zeichensatz.

Gemeinsame Methoden

str charAt(int index) Gibt das Zeichen am angegebenen Index zurück

String concat(String str ) Verbinden Sie die angegebene Zeichenfolge str mit dem Ende dieser Zeichenfolge und geben Sie die Zeichen nach erfolgreicher Verbindung zurück. Daher muss sie akzeptiert werden, um wirksam zu sein.

boolean enthält (CharSequence s), um festzustellen, ob diese Zeichenfolge das angegebene Zeichen enthält Wertesequenz, CharSequence ist hier eine Schnittstelle, Sie können ihre Unterklassen direkt als Parameter verwenden (String, StringBuffer, StringBuild)

statischer String copyValueOf(char[] c) wandelt das Zeichenarray in eine Zeichenfolge um und gibt

statischer String copyValueOf(char[] c, int off, int count) wandelt das abgefangene Zeichenarray in einen String um und gibt ihn zurück. off ist der Index zum Starten des Abfangens, und count ist die Anzahl der Abfangvorgänge

boolean endWith(String s) Bestimmt, ob die Zeichenfolge mit s endet

boolean equal(Object o) Wird zum Vergleich verwendet

int indexOf(char c) Gibt das Zeichen c zurück, das das erste ist in der Zeichenfolge Der Index des ersten Vorkommens

int indexOf(char c,int fromIndex) Startet die Suche ab dem angegebenen Index und findet den Index des ersten Vorkommens

int indexOf(String str) Gibt die angegebene Teilzeichenfolge zurück. Der Index des ersten Vorkommens in dieser Zeichenfolge.

int indexOf(String str,int fromIndex) Gibt den Index des ersten Vorkommens des angegebenen Teilstrings in diesem String zurück, beginnend beim angegebenen Index.

boolean isEmpty()

int length()

boolean matches(String regex) ob mit dem regulären Ausdruck übereinstimmt

trim() gibt den String zurück Kopieren, führende und nachfolgende Leerzeichen ignorieren.

String substring(int beginIndex) Gibt einen neuen String zurück, der ein Teilstring dieses Strings ist.

String substring(int beginIndex, int endIndex) Gibt einen neuen String zurück, der ein Teilstring dieses Strings ist.

String toUpperCase() Konvertiert alle Zeichen in diesem String unter Verwendung der Regeln des Standardgebietsschemas in Großbuchstaben.

String[] split(String regex) Teilt diesen String basierend auf Übereinstimmungen mit dem angegebenen regulären Ausdruck.

String[] split(String regex, int limit) Teilt diesen String basierend auf der Übereinstimmung mit dem angegebenen regulären Ausdruck.

char[] toCharArray() Konvertieren Sie diese Zeichenfolge in ein neues Zeichenarray.

byte[] getBytes(Charset charset) Codieren Sie diesen String mithilfe des angegebenen Zeichensatzes in eine Bytesequenz und speichern Sie das Ergebnis in einem neuen Byte-Array

Hinweis

Die obige neue Konstruktionsmethode String(byte[] bys,String charsetName) ist sehr wichtig, sie kann den Codierungssatz der Zeichenfolge ändern (arbeitet mit byte[] getBytes(Charset charset)) zusammen Schauen Sie sich ein Beispiel an. Der Code lautet wie folgt:


/*
 * InputStreamReader实现了将字节流FileInputStream转换为字符流,然后使用转换来的字节流创建高效流,从而实现高效的读写
 */

/*
 * 编码集(我的eclipse编辑器默认的是utf-8
 * 下面将中文字符串的编码集变为GBK写入a.txt文件,因为a.txt默认的是utf-8的因此这里在文件中显示的是乱码
 * 然后我们读出来的还是GBK的,因为我们写入的是GBK编码集的,但是我的eclipse是utf-8的编码集,因此在控制台上输出的还是乱码
 * new String(byte[] bys,String
 * charsetName)使用这个构造方法将byte数组改变编码集并且转换为utf-8格式的,那么这次在控制台上输出的就不乱码了
 */

// 将GBK格式的中文写入a.txt文件
File file = new File("src/a.txt");
FileOutputStream fileOutputStream = new FileOutputStream(file);
String str = "中";
byte[] by = str.getBytes("GBK"); // 将字符串改为GBK编码集
fileOutputStream.write(by);
fileOutputStream.close();

//从a.txt文件中读取中文
FileInputStream fileInputStream = new FileInputStream(file);
int len;
byte[] bys = new byte[4];
while ((len = fileInputStream.read(bys)) != -1) {
 System.out.println(new String(bys, "GBK"));
}
fileInputStream.close();

StringBuffer

Thread-sichere veränderbare Zeichenfolge. Ein String-Puffer ähnlich wie String, der jedoch nicht geändert werden kann. Der wichtigste Punkt ist natürlich die Thread-Sicherheit. Aus dem Quellcode können wir ersehen, dass für einige Vorgänge (Anhängen, Einfügen usw.) Thread-Kontrollblöcke verwendet werden, die für die Verwendung in Multithreads geeignet sind Der Code lautet wie folgt:


 public synchronized StringBuffer append(Object obj) {
super.append(String.valueOf(obj));
return this;
}

public synchronized StringBuffer append(String str) {
super.append(str);
return this;
}

public synchronized StringBuffer delete(int start, int end) {
super.delete(start, end);
return this;
}

/**
 * @throws StringIndexOutOfBoundsException {@inheritDoc}
 * @since 1.2
 */
public synchronized StringBuffer deleteCharAt(int index) {
super.deleteCharAt(index);
return this;
}

Konstruktion

neuer StringBuffer(StringBuilder str)

new StringBuffer(String str)

Häufig verwendete Methoden

StringBuffer append(str) hängt den angegebenen Typ von str an das Ende an string ( String,char,char[],int,double,float,long,StringBuffer,StringBuilder)

StringBuffer insert(int offest, str) Füge den angegebenen Typ von str in diese Sequenz ein, Offset gibt den Anfang an of insert Der Index der Position, die Typen sind String, char, char[], int, double, float, long, StringBuffer, StringBuilder

String delete(int fromIndex,int endIndex) entfernt den String darin Sequenz und gibt eine neue Pufferzeichenfolge zurück

StringBuffer reverse() Umkehrzeichenfolge

String substring(int start) Gibt eine neue Zeichenfolge zurück, die die Zeichenuntersequenz enthält, die derzeit in dieser Zeichenfolge enthalten ist.

String substring(int start, int end) Gibt einen neuen String zurück, der die Teilsequenz von Zeichen enthält, die derzeit in dieser Sequenz enthalten sind.

StringBuffer deleteCharAt(int index) Entfernt das Zeichen an der angegebenen Position in dieser Sequenz.

int length() length

String toString() Gibt die String-Darstellung der Daten in dieser Sequenz zurück.

StringBuilder

Diese Klasse wird bevorzugt empfohlen, da sie in den meisten Implementierungen schneller als StringBuffer ist. Diese Klasse ist jedoch nicht threadsicher und eignet sich nur für einzelne Threads. Natürlich können Sie dies auch verwenden, aber Sie müssen die Synchronisierung selbst implementieren

Konstruktionsmethode

neuer StringBuilder(String str)

Gemeinsame Methoden

Die allgemeinen Methoden dieser Klasse sind die gleichen wie die von StringBuffer. Ich werde sie hier nicht einzeln auflisten. Sie können sie verwenden, indem Sie auf die oben genannten

verweisen

Das obige ist der detaillierte Inhalt vonErweitertes Tutorial zu Java-Strings. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn