Heim >Java >javaLernprogramm >Erfahren Sie mehr über String-Klassen in Java

Erfahren Sie mehr über String-Klassen in Java

怪我咯
怪我咯Original
2017-06-30 10:52:291315Durchsuche

Der folgende Editor bringt Ihnen einen Artikel über JavaStringFortgeschritten (ein Artikel, den Sie unbedingt lesen müssen). Der Herausgeber findet es ziemlich gut, deshalb teile ich es jetzt mit Ihnen und gebe es als Referenz. 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 unter Verwendung des angegebenen Zeichensatzes.

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, und Sie können ihre Unterklassen direkt als Parameter verwenden (String, StringBuffer, StringBuild)

statischer String copyValueOf(char[] c) zum Konvertieren von Zeichenarray in Zeichen umwandeln String und zurückgeben

statischer String copyValueOf(char[] c, int off, int count) Verwandeln Sie das abgefangene Zeichenarray in einen String und geben Sie ihn zurück, off ist der Index zum Starten des Abfangens und count ist der Anzahl der Interceptions

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

boolean equal(Object o) für den Vergleich

int indexOf(char c) gibt Zeichen zurück c Index des ersten Vorkommens in der Zeichenfolge

int indexOf(char c,int fromIndex) Beginnen Sie die Suche ab dem angegebenen Index und suchen Sie den Index des ersten Vorkommens

int indexOf(String str ) Gibt den Index des ersten Vorkommens der angegebenen Teilzeichenfolge in dieser Zeichenfolge zurück.

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 regulärer Ausdruck

trim übereinstimmt () Gibt eine Kopie der Zeichenfolge zurück und ignoriert führende und nachfolgende Leerzeichen.

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

Der obige neue String(byte[] bys,String charsetName) Konstruktor ist sehr wichtig, er kann den Codierungssatz des Strings (und byte[] getBytes (Charset) ändern charset)), schauen wir uns unten 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 Zeichenfolgen. 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 unter Multithreading 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)
neuer StringBuffer(String str)

Häufig verwendete Methoden

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

StringBuffer insert(int offest, str) Fügt den str des angegebenen Typs in diese Sequenz ein. Der Offset stellt den Index der Position dar, an der die Einfügung beginnt. Die Typen sind String, char, char[],int,double,float,long,StringBuffer,StringBuilder

String delete(int fromIndex,int endIndex) entfernt den String in dieser Sequenz und gibt einen neuen Pufferstring zurück

StringBuffer reverse() Kehrt einen String um

String substring(int start) Gibt einen neuen String zurück, der die Zeichenteilsequenz 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 vonErfahren Sie mehr über String-Klassen in Java. 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