Heim > Java > javaLernprogramm > Hauptteil

Detaillierte Erklärung von Strings in Java

迷茫
Freigeben: 2017-03-26 15:56:45
Original
1598 Leute haben es durchsucht
  • 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");
Nach dem Login kopieren
  1. 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));
    }
}
Nach dem Login kopieren

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]);
  }
Nach dem Login kopieren
String str = "boo:and:foo";
  String[] arr = str.split(":");
  
for
 (int i = 0; i < arr.length; i++)
  {
    System.out.print(arr[i]);
  }
Nach dem Login kopieren

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] + "]");
}
Nach dem Login kopieren

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) == &#39;a&#39; ) {     // 累加统计次数
    num++; 
    }
}
System.out.println("字符a出现的次数:" + num);
Nach dem Login kopieren

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");
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!