Lernen Sie Java für Android-Entwicklung String-Grundlagen

In diesem Tutorial lernen Sie eine der wichtigsten Programmierdatenstrukturen (Typen) in Java-the-String kennen. String-Variablen können zum Speichern der einem Programm zugeordneten Textdaten (Buchstaben, Zahlen, Symbole) verwendet werden.

Android-Anwendungen sind in Java, einer Programmiersprache, geschrieben. Java verfügt über eine Reihe von primitiven Datentypen für verschiedene Arten von Zahlen (Ganzzahlen, Gleitkommazahlen usw.), boolesche Werte und einzelne Zeichen. Java enthält nicht nur Textdaten als Arrays oder Zeichen, sondern enthält auch eine leistungsstarke Objektklasse namens String (java.lang.String), die Textdaten ordentlich einkapselt und zur Bearbeitung von Inhalten verwendet werden kann. In diesem Lernprogramm erfahren Sie, wie Sie Strings auf verschiedene Arten erstellen, verwenden und bearbeiten, z. B. wie sie als Android-Projektressourcen gespeichert werden.

Was du brauchen wirst

Technisch benötigen Sie keine Tools, um dieses Tutorial abzuschließen, aber Sie werden sie sicherlich benötigen, um Android-Anwendungen zu entwickeln.

Um Android-Anwendungen (oder auch beliebige Java-Anwendungen) zu entwickeln, benötigen Sie eine Entwicklungsumgebung zum Schreiben und Erstellen von Anwendungen. Eclipse ist eine sehr beliebte Entwicklungsumgebung (IDE) für Java und die bevorzugte IDE für Android-Entwicklung. Es ist für Windows-, Mac- und Linux-Betriebssysteme kostenlos verfügbar.

Vollständige Anweisungen zur Installation von Eclipse (einschließlich der unterstützten Versionen) und des Android SDK finden Sie auf der Android-Entwicklerwebsite.

Was ist ein String??

Grundsätzlich sind Java-Programme in Funktionalität und Daten unterteilt. Viele von Menschen lesbare Daten werden in Form von Wörtern, Zeichen, Satzzeichen, Zahlen usw. erstellt. Grundsätzlich alles, was der Benutzer auf einer Tastatur eingeben kann. Programmierer bezeichnen diese Speicherung von Textinhalten als "String-Daten". Die Daten selbst können jedoch mit verschiedenen Datenstrukturen gespeichert werden, abhängig von Ihren Anforderungen:

  • Die Java-String-Klasse (java.lang.String) ist eine Dienstprogrammklasse zum Speichern von String-Daten, die nicht geändert werden.
  • Die Java-StringBuilder-Klasse (java.lang.StringBuilder) ist eine Dienstprogrammklasse zum Speichern von String-Daten, die geändert werden. Wird verwendet, wenn Parallelität kein Problem ist.
  • Die Java-StringBuffer-Klasse (java.lang.StringBuffer) ist eine Dienstprogrammklasse zum Speichern von String-Daten, die geändert werden. Wird verwendet, wenn Parallelität ein Problem ist.
  • Ein Array von Zeichenprimitiven oder Zeichenvariablen (java.lang.Character)
  • Ein Array von Byte-Grundelementen oder Byte-Variablen (java.lang.Byte)
  • Verschiedene andere Datenstrukturen und Objektklassen können zum Speichern von String-Daten verwendet werden

Wie Sie sehen, gibt es zahlreiche Möglichkeiten, String-Daten in Java zu speichern. Die folgenden Java-Variablen stellen beispielsweise eine Zeichenfolge von Vokalzeichen auf verschiedene Arten dar (als Bytes, Zeichen, Unicode-Darstellungen oder Teilzeichenfolgen):

 String strVowels = "aeiou"; char astrVowels [] = 'a', 'e', ​​'i', 'o', 'u'; byyteVowels [] = 'a', 'e', ​​'i', 'o', 'u'; Byte abyteVowelsU [] = '\ u0061', '\ u0065', '\ u0069', '\ u006F', '\ u0075'; String uVowels = neuer String ("\ u0061 \ u0065 \ u0069 \ u006F \ u0075"); CharSequence csVowels = (CharSequence) neuer String ("aeiou"); StringBuffer sbVowels = neuer StringBuffer ("a" + "e" + "iou"); StringBuilder sVowelBuilder = new StringBuilder (); sVowelBuilder.append ('a'); sVowelBuilder.append ("eio"); sVowelBuilder.append ('\ u0075'); 

Die String-Klasse ist die am häufigsten verwendete Convenience-Klasse, insbesondere von Anfängern. Sie sollten sich auch mit der CharSequence-Schnittstelle (java.lang.CharSequence) auskennen, da diese häufig beim Arbeiten mit Android-Ressourcen verwendet wird.

Mit der String-Klasse arbeiten

Die String-Klasse ist als Teil des Pakets java.lang verfügbar, das im Android-SDK für Entwickler enthalten ist. Die vollständige Dokumentation für die String-Klasse finden Sie in der Dokumentation zum Android SDK.

Die String-Klasse stellt eine unveränderliche (nicht veränderbare) Folge von Unicode-Zeichen (16-Bit-Kodierung) dar, die zum Speichern von Zeichen in einer beliebigen Sprache (Englisch, Deutsch, Japanisch usw.) geeignet ist..

Was hat das mit der Android-Entwicklung zu tun? Nun, Zeichenfolgen werden zum Speichern von auf Anwendungsbildschirmen angezeigten Inhalten oder zum Speichern der Eingaben eines Benutzers verwendet. Android-Entwickler laden, erstellen und manipulieren ständig String-Daten. Schauen wir uns also ein paar Dinge an, die wir mit der String-Klasse machen können.

Strings erstellen

Die String-Klasse verfügt über zahlreiche Konstruktoren zum Erstellen und Instantiieren von String-Variablen. String-Variablen können mit dem Schlüsselwort null auf leer gesetzt werden. Sie können den Inhalt auch aus Byte-, Zeichen- oder anderen String-Daten festlegen. Im Folgenden finden Sie einige Möglichkeiten, String-Variablen für die Verwendung in Ihren Anwendungen zu erstellen (einige werden von den Variablen initialisiert, wie uVowels und sVowelBuilder, die zuvor in diesem Lernprogramm definiert wurden):

 String strVowels1 = "aeiou"; String strVowels2 = neuer String ("aeiou"); String strVowels3 = neuer String (sVowelBuilder); String strVowels4 = neuer String (sbVowels); String strVowels5 = neuer String (uVowels); String strVowels6 = neuer String (abyteVowels2); String strVowels7 = neuer String (abyteVowelsU); String strVowels8 = neuer String ("a" + "e" + "iou"); String strVowels9 = new String (neues Zeichen [] '\ u0061', '\ u0065', '\ u0069', '\ u006F', '\ u0075'); String strVowels10 = new String (neues Byte [] '\ u0061', '\ u0065', '\ u0069', '\ u006F', '\ u0075'); 

Android String-Ressourcen verwenden

Sie können Zeichenfolgen auch aus Android-Anwendungsressourcen laden, sofern Sie sie ordnungsgemäß gespeichert haben. Beispielsweise können Sie die String-Ressource für den Anwendungsnamen wie folgt in eine String-Variable laden:

 String strAppName = getResources (). GetString (R.string.app_name); 

Dazu muss die betreffende Android-Anwendung irgendwo in der Projektverzeichnishierarchie / res / values ​​eine Zeichenfolgenressource mit dem Namen app_name enthalten. Beispielsweise eine Datei mit dem Namen /res/values/strings.xml, die die folgende XML-Stringdefinition enthält:

   Mein Android-App-Name! 

Einfache String-Iteration

Schauen wir uns nun einige der coolen Sachen an, die Sie mit String-Objekten machen können. Zunächst konzentrieren wir uns auf die Features, die in der String-Klasse selbst verfügbar sind.

Es ist hilfreich, sich einen String als eine Folge von Zeichen vorzustellen. Daher möchten Sie manchmal den Inhalt eines Zeichens nach dem anderen durchlaufen. Es gibt zahlreiche Möglichkeiten, dies zu tun, aber eine einfache Möglichkeit ist die Verwendung einer for () - Schleife. Sie können die length () - Methode von String verwenden, um festzustellen, wie viele Zeichen Sie haben, und die charAt () - Methode, um ein bestimmtes Zeichen über seinen Index abzurufen, ähnlich wie bei einem Array-Index. Zum Beispiel:

 String strVowels = "AEIOU"; für (int i = 0; i < strVowels.length(); i++)  char curChar = strVowels.charAt(i);  

String Modifikationen: Die Grundlagen

Wie bereits erwähnt, sind String-Variablen nicht veränderbar oder unveränderlich. Das bedeutet nicht, dass Sie den Textinhalt einer String-Variablen nicht bearbeiten können, sondern jede Methode, die dies tut, gibt eine neue String-Variable zurück. Zu den häufigsten Beispielen für String-Klassenmethoden, die neue String-Variablen generieren, gehören:

  • Die concat () -Methode wird verwendet, um zwei Zeichenfolgen zu einem neuen String-Objekt zu verketten oder zu kombinieren. Hinweis: Sie können den Operator + auch verwenden, um ein neues String-Objekt auch aus Teilen zu erstellen.
  • Mit der Methode format () können Sie parametrisierte Zeichenfolgenvorlagen erstellen (ein fortgeschritteneres Thema für zukünftige Diskussionen).
  • Die replace () - und replaceFirst () -Methoden werden verwendet, um ein Zeichen oder eine Teilzeichenfolge durch eine andere Teilzeichenfolge zu ersetzen. Die replaceAll () - Methode unterstützt das Abgleichen von Mustern mit regulären Ausdrücken.
  • Die split () -Methode ist hilfreich, um eine größere Zeichenfolge in zahlreiche Teilzeichenfolgen aufzuteilen. Sie können beispielsweise eine durch Kommas getrennte Liste in ein Array von String-Objekten aufteilen, eines für jedes Listenelement.
  • Die substring () -Methode wird verwendet, um nur einen Teil des ursprünglichen String-Objekts zu extrahieren.
  • Die Methoden toUpperCase () und toLowerCase () werden verwendet, um die Groß- / Kleinschreibung der Zeichenfolge zu ändern. Dies ist besonders beim Normalisieren von Zeichenfolgen hilfreich.
  • Die trim () -Methode wird verwendet, um Leerzeichen vor oder nach dem String-Inhalt zu entfernen (entfernen).

Beachten Sie, dass jede dieser Methoden eine Neu String-Objektinstanz zum Speichern des Ergebnisses. Die ursprüngliche String-Variable bleibt unverändert.

String-Änderungen: Konvertieren in Groß- und Kleinschreibung

Manchmal möchten Sie Ihre Zeichenfolge in Groß- oder Kleinbuchstaben konvertieren. Ein Grund dafür, dass Sie die Groß- / Kleinschreibung einer Zeichenfolge ändern möchten, ist die Normalisierung der Zeichenfolge, um die Suche oder den Vergleich zwischen Groß- und Kleinschreibung zu vereinfachen.

 String strUpperCaseVersion = strVowels.toUpperCase (); String strLowerCaseVersion = strVowels.toLowerCase (); 

Beachten Sie, dass Sie hier zwei neue String-Variablen zur Verwendung erstellt haben. Die ursprüngliche String-Variable strVowels bleibt unverändert.

String Modifikationen: Aufteilen

Manchmal möchten Sie eine Zeichenfolge schnell in Teilzeichenfolgen analysieren. Sie können dies tun, um die einzelnen Wörter aus einem Satz oder eine begrenzte Liste von Tags usw. zu extrahieren. Sie können dazu einfache reguläre Ausdrücke mit der Funktion split () verwenden. Der folgende Code extrahiert beispielsweise die einzelnen Wörter (Farben) aus einem String:

 Zeichenfolge someWords = "Rot-Orange-Gelb-Grün-Blau-Indigo"; Zeichenfolge aColors [] = someWords.split (""); 

Wenn Sie den Inhalt des String-Arrays mit dem Namen aColors ausdrucken möchten, sehen Sie Folgendes:

 aColors [0] = Rote aColors [1] = Orange aColors [2] = Gelbe aColors [3] = Grüne aColors [4] = Blaue aColors [5] = Indigo 

Beachten Sie, dass Sie hier ein neues Array mit 6 neuen String-Variablen zur Verwendung erstellt haben.

Simple String Matching

Sie können mit der Methode compareTo () der String-Klasse überprüfen, ob zwei Zeichenfolgen übereinstimmen. Diese Methode gibt 0 zurück, wenn und nur wenn die beiden Zeichenfolgen identisch sind:

 String strVowels = "AEIOU"; if (strVowels.compareTo ("AEIOU") == 0) // Zeichenfolgen stimmen überein! (Dieser Code wird ausgeführt) else // Strings passen nicht zusammen!  

Beachten Sie, dass die Methode compareTo () die Groß- und Kleinschreibung berücksichtigt. Erwägen Sie, beide Seiten Ihres Vergleichs in einen Fall zu konvertieren, bevor Sie sie vergleichen, es sei denn, Sie suchen ausdrücklich nach einem Fall. Wenn Sie sich nicht für case interessieren, können Sie anstelle der compareTo () -Methode auch die compareToIgnoreCase () -Methode verwenden:

 String strVowels = "AEIOU"; if (strVowels.compareToIgnoreCase ("aeiou") == 0) // Strings passen! (Dieser Code wird ausgeführt) else // Strings passen nicht zusammen!  

Einfache String-Suche

Manchmal möchten Sie eine Zeichenfolge nach einem Zeichen oder einer Teilzeichenfolge durchsuchen. Es gibt viele andere Möglichkeiten, String-Abgleich und Suche durchzuführen, sodass Sie beliebige Suchmethoden erstellen können. Sie können mit den Methoden indexOf () und lastIndexOf () auch nach bestimmten Zeichen oder Teilzeichenfolgen suchen. Überprüfen Sie, ob eine Zeichenfolge mit der Teilzeichenfolge startWith () und endsWith () beginnt oder endet. Schließlich unterstützt die match () -Methode die Übereinstimmung von regulären Ausdrücken.

Hier verwenden wir die contains () -Methode, um festzustellen, ob ein bestimmter Teilstring vorhanden ist:

 if (strVowels.contains ("IOU") == true) // String enthält einen IOU-Sub-String!  

Wenn Sie sich nicht für den Fall interessieren, verwenden Sie stattdessen die Methode compareToIgnoreCase ():

 String strVowels = "AEIOU"; if (strVowels. compareToIgnoreCase ("aeiou") == 0) // Strings passen! (Dieser Code wird ausgeführt) else // Strings passen nicht zusammen!  

TIPP: Wenn Sie in Ihren Anwendungen Abgleich- und Suchfunktionen implementieren, vergessen Sie nicht, die erforderlichen Vorverarbeitungs-String-Manipulationen auszuführen, um String- / Upper- / Lower- / Mixed-String-Probleme vor der Suche auszuschließen. Die Normalisierung der Benutzereingaben kann als Teil des Eingabevalidierungsprozesses durchgeführt werden, um Ihren Code so einfach und wartbar wie möglich zu halten.

Zeichenfolgen und andere Datentypen

Das String-Objekt ist für Java so grundlegend, dass jede Klasse, da sie von der Stammklasse Object (java.lang.Object) abgeleitet ist, über eine toString () - Methode verfügt, um eine nützliche String-Darstellung ihres Werts zu erstellen. Klassen, die keine sinnvolle Zeichenfolgendarstellung haben, geben normalerweise einen Bezeichner oder Debug-Informationen zum Klassentyp zurück. Diejenigen, die über eine sinnvolle Zeichenfolgendarstellung verfügen, z. B. eine Zahlenzeichenfolge aus einem Integer-Objekt, geben die Textdarstellung der gekapselten Zahl zurück. Wenn Sie mit einem String verkettet sind, beispielsweise mit dem oben beschriebenen Plusoperator (+), werden die Ergebnisse der toString () -Methode standardmäßig verwendet. Zum Beispiel:

 Integer iNum = new Integer (123); String sText = "Die Zahl Eins-Zwei-Drei ="; String sFullText = sText + iNum; String sFullText2 = sText + iNum.toString (); 

Beide Zeichenfolgen (sFullText und sFullText2) haben den gleichen Wert "Die Nummer Eins-Zwei-Drei = 123". Viele solcher Objekte können auch umgekehrt arbeiten. Das heißt, sie können eine Zeichenfolgendarstellung parsen und sie in den systemeigenen Typ konvertieren, den das Objekt darstellt. Für instace kann wiederum mit der Integer-Klasse die parseInt () - Methode verwendet werden, um ein neues Integer-Objekt basierend auf der Zeichenfolgendarstellung abzurufen.

Saiten und Leistung

Wie Sie gesehen haben, können Strings sehr effektiv eingesetzt werden. Die Erstellung und Bearbeitung von Strings hat jedoch einige Nachteile. Unvorsichtige String-Manipulation kann negative Auswirkungen auf die Leistung Ihrer Anwendung haben. Es ist ein grundlegendes Konstruktionsprinzip von Java, keine Objekte zu erstellen, die Sie nicht benötigen. Sie sehen, dass die Bearbeitung und Änderung von Strings dazu führen kann, dass viele String-Variablen herumfliegen. Hier sind einige Tipps für eine gute Saitenverwendung:

  • Erstellen Sie keine String-Variablen, die Sie nicht benötigen, insbesondere temporäre.
  • Verwenden Sie die Klassen StringBuilder und StringBuffer, um String-Inhalte von Grund auf zu generieren.
  • Überprüfen Sie die auf der Android Developer-Website verfügbaren Leistungsvorschläge.
  • Verwenden Sie statische abschließende String-Konstanten für zur Kompilierzeit bekannte String-Werte.

Einpacken

Zeichenfolgen sind ein wichtiger Datentyp, den Android-Entwickler zum Speichern von Textdaten verwenden. String-Daten, sei es eine Folge von Zeichen, Zahlen, Symbolen oder eine Mischung davon, können auf verschiedene Arten gespeichert werden. Die String-Klasse ist jedoch die primäre Dienstprogrammklasse, die zu diesem Zweck verwendet wird. Die String-Klasse und ihre Hilfsklassen wie StringBuilder enthalten einen robusten Satz von Methoden für die Verwendung mit Strings. Sie können deren Inhalt durchsuchen oder ändern.

Über die Autoren

Die mobilen Entwickler Lauren Darcey und Shane Conder haben mehrere Bücher zur Android-Entwicklung mitgeschrieben: ein ausführliches Programmierbuch mit dem Titel Android Wireless-Anwendungsentwicklung und Sams TeachYourself Entwicklung von Android-Anwendungen in 24 Stunden. Wenn sie nicht schreiben, verbringen sie ihre Zeit damit, mobile Software in ihrem Unternehmen zu entwickeln und Beratungsdienste anzubieten. Sie können sie per E-Mail an [email protected], über ihren Blog unter androidbook.blogspot.com und über Twitter @androidwireless erreichen.

Benötigen Sie weitere Hilfe zum Schreiben von Android-Apps? Schauen Sie sich unsere neuesten Bücher und Ressourcen an!