In questo tutorial, acquisirai familiarità con una delle più importanti strutture di dati di programmazione (tipi) in Java-the String. Le variabili stringa possono essere utilizzate per memorizzare i dati testuali (lettere, numeri, simboli) associati a un programma.
Le applicazioni Android sono scritte in Java, un linguaggio di programmazione. Java ha un numero di tipi di dati primitivi per diversi tipi di numeri (interi, float, ecc.), Valori booleani e singoli caratteri. Oltre alla memorizzazione di dati testuali come matrici o caratteri, Java include anche una potente classe di oggetti chiamata String (java.lang.String), che incapsula ordinatamente i dati testuali e può essere utilizzata per manipolare il contenuto. In questo tutorial imparerai come creare, utilizzare e manipolare le stringhe in diversi modi, incluso come archiviarle come risorse di progetto Android.
Tecnicamente, non hai bisogno di strumenti per completare questo tutorial, ma sicuramente ti serviranno per sviluppare applicazioni Android.
Per sviluppare applicazioni Android (o qualsiasi altra applicazione Java, per quella materia), è necessario un ambiente di sviluppo per scrivere e creare applicazioni. Eclipse è un ambiente di sviluppo molto popolare (IDE) per Java e l'IDE preferito per lo sviluppo Android. È liberamente disponibile per i sistemi operativi Windows, Mac e Linux.
Per le istruzioni complete su come installare Eclipse (incluse le versioni supportate) e l'SDK Android, consultare il sito Web degli sviluppatori Android.
Al livello più fondamentale, i programmi Java sono suddivisi in funzionalità e dati. Molti dati leggibili dall'uomo si presentano sotto forma di parole, caratteri, segni di punteggiatura, numeri e così via. Fondamentalmente, tutto ciò che l'utente può digitare su una tastiera. I programmatori chiamano questa memoria di contenuto testuale "dati stringa", ma i dati stessi possono essere archiviati utilizzando una varietà di strutture di dati differenti, a seconda delle esigenze:
Come puoi vedere, esistono numerosi modi per archiviare i dati delle stringhe in Java. Ad esempio, le seguenti variabili Java rappresentano una stringa di caratteri vocalici in modi diversi (come byte, caratteri, rappresentazioni Unicode o sotto-stringhe):
String strVowels = "aeiou"; char astrVowels [] = 'a', 'e', 'i', 'o', 'u'; byte abyteVowels [] = 'a', 'e', 'i', 'o', 'u'; byte abyteVowelsU [] = '\ u0061', '\ u0065', '\ u0069', '\ u006F', '\ u0075'; String uVowels = new String ("\ u0061 \ u0065 \ u0069 \ u006F \ u0075"); CharSequence csVowels = (CharSequence) new String ("aeiou"); StringBuffer sbVowels = new StringBuffer ("a" + "e" + "iou"); StringBuilder sVowelBuilder = new StringBuilder (); sVowelBuilder.append ( 'a'); sVowelBuilder.append ( "OEI"); sVowelBuilder.append ( '\ u0075');
La classe String è la classe di convenienza utilizzata più spesso, soprattutto dai principianti. Avrai anche bisogno di una comprensione approfondita dell'interfaccia CharSequence (java.lang.CharSequence), poiché viene spesso utilizzata quando si lavora con risorse Android.
La classe String è disponibile come parte del pacchetto java.lang, incluso nell'SDK Android che gli sviluppatori possono utilizzare. La documentazione completa per la classe String può essere trovata con la documentazione di Android SDK.
La classe String rappresenta una sequenza immutabile (non modificabile) di caratteri Unicode (codifica a 16 bit), appropriata per l'archiviazione di caratteri in qualsiasi lingua (inglese, tedesco, giapponese e così via).
Quindi cosa c'entra questo con lo sviluppo di Android? Bene, le stringhe vengono utilizzate per archiviare il contenuto visualizzato nelle schermate dell'applicazione o per memorizzare l'input acquisito da un utente. Gli sviluppatori Android caricano, creano e manipolano costantemente i dati di stringa. Diamo un'occhiata ad alcune delle cose che possiamo fare con la classe String.
La classe String ha numerosi costruttori, per la creazione e l'istanziazione di variabili stringa. Le variabili stringa possono essere impostate su empty utilizzando la parola chiave null. È anche possibile impostare il suo contenuto da byte, carattere o altri dati String. Ad esempio, ecco alcuni modi per creare variabili String da utilizzare all'interno delle tue applicazioni (alcune sono inizializzate dalle variabili, come uVowels e sVowelBuilder, definite precedentemente in questo tutorial):
String strVowels1 = "aeiou"; String strVowels2 = new String ("aeiou"); String strVowels3 = new String (sVowelBuilder); String strVowels4 = new String (sbVowels); String strVowels5 = new String (uVowels); String strVowels6 = new String (abyteVowels2); String strVowels7 = new String (abyteVowelsU); String strVowels8 = new String ("a" + "e" + "iou"); String strVowels9 = new String (new char [] '\ u0061', '\ u0065', '\ u0069', '\ u006F', '\ u0075'); String strVowels10 = new String (nuovo byte [] '\ u0061', '\ u0065', '\ u0069', '\ u006F', '\ u0075');
È inoltre possibile caricare stringhe dalle risorse dell'applicazione Android, a condizione che siano state memorizzate correttamente. Ad esempio, è possibile caricare la risorsa stringa per il nome dell'applicazione in una variabile String come indicato di seguito:
String strAppName = getResources (). GetString (R.string.app_name);
Ciò richiede che l'applicazione Android in questione contenga una risorsa stringa denominata app_name da qualche parte nella gerarchia di directory / res / values del progetto. Ad esempio, un file denominato /res/values/strings.xml che contiene la seguente definizione stringa XML:
Il mio nome dell'app Android!
Ora diamo un'occhiata ad alcune delle cose interessanti che puoi fare agli oggetti String. Innanzitutto, concentriamoci sulle funzionalità disponibili all'interno della stessa classe String.
È utile pensare a una stringa come a una sequenza di caratteri. In quanto tale, a volte vuoi scorrere il suo contenuto, un personaggio alla volta. Ci sono molti modi per farlo, ma un modo semplice è usare un ciclo for (). Puoi sfruttare il metodo String's length () per determinare quanti caratteri hai e il metodo charAt () per recuperare un carattere specifico dal suo indice, proprio come faresti con un indice di array. Per esempio:
String strVowels = "AEIOU"; per (int i = 0; i < strVowels.length(); i++) char curChar = strVowels.charAt(i);
Come accennato in precedenza, le variabili String sono immutabili o immutabili. Ciò non vuol dire che non è possibile manipolare il contenuto testuale di una variabile String, ma ogni metodo che lo fa restituisce una nuova variabile String. Alcuni esempi comuni di metodi di classe String che generano nuove variabili String includono:
Tieni presente che ognuno di questi metodi assegna a nuovo Istanza di oggetto stringa per memorizzare il risultato. La variabile String originale rimane invariata.
A volte vuoi convertire la tua stringa in maiuscolo o minuscolo. Uno dei motivi per cui potresti voler cambiare il caso di una stringa è quello di normalizzare la stringa per rendere la ricerca o la corrispondenza case-insensitive più facile da implementare.
String strUpperCaseVersion = strVowels.toUpperCase (); String strLowerCaseVersion = strVowels.toLowerCase ();
Nota che qui hai creato due nuove variabili String da usare. La variabile String originale, strVowels, rimane invariata.
A volte si desidera analizzare rapidamente una stringa in sottostringhe. È possibile eseguire questa operazione per estrarre le singole parole da una frase o un elenco delimitato di tag, ecc. È possibile utilizzare semplici espressioni regolari con la funzione split () per questo scopo. Ad esempio, il seguente codice estrae le singole parole (colori) da una stringa:
String someWords = "Red Orange Yellow Green Blue Indigo"; String aColors [] = someWords.split ("");
Se dovessi stampare il contenuto dell'array String chiamato aColors, vedresti che:
aColors [0] = Red aColors [1] = Orange aColors [2] = Yellow aColors [3] = Green aColors [4] = Blue aColors [5] = Indigo
Si noti che qui è stato creato un nuovo array contenente 6 nuove variabili String da utilizzare.
È possibile verificare se due stringhe corrispondono usando il metodo compareTo () della classe String. Questo metodo restituirà 0 se, e solo se, le due stringhe sono identiche:
String strVowels = "AEIOU"; if (strVowels.compareTo ("AEIOU") == 0) // Le stringhe corrispondono! (Questo codice verrà eseguito) else // Le stringhe non corrispondono!
Si noti che il metodo compareTo () è sensibile al maiuscolo / minuscolo. Valuta di convertire entrambi i lati del confronto in un caso prima di confrontarli, a meno che tu non stia specificatamente cercando un caso. Se non ti interessa il caso, puoi anche utilizzare il metodo compareToIgnoreCase () invece del metodo compareTo ():
String strVowels = "AEIOU"; if (strVowels.compareToIgnoreCase ("aeiou") == 0) // Le stringhe corrispondono! (Questo codice verrà eseguito) else // Le stringhe non corrispondono!
A volte si desidera cercare una stringa per un carattere o sottostringa. Esistono molti altri modi per eseguire la corrispondenza e la ricerca di stringhe, consentendo di creare qualsiasi metodo di ricerca desiderato. Puoi anche cercare specifici caratteri o sottostringhe usando i metodi indexOf () e lastIndexOf (), controlla se una stringa inizia o finisce con una sottostringa usando i metodi startsWith () e endsWith (). Infine, il metodo matches () supporta la corrispondenza delle espressioni regolari.
Qui usiamo il metodo contains () per determinare se esiste una sottostringa specifica:
if (strVowels.contains ("IOU") == true) // La stringa contiene sottostringa IOU!
Se non ti interessa il caso, usa invece il metodo compareToIgnoreCase ():
String strVowels = "AEIOU"; if (strVowels. compareToIgnoreCase ("aeiou") == 0) // Le stringhe corrispondono! (Questo codice verrà eseguito) else // Le stringhe non corrispondono!
SUGGERIMENTO: quando si implementano le funzionalità di ricerca e corrispondenza nelle applicazioni, non dimenticare di eseguire alcuna manipolazione della stringa di pre-elaborazione necessaria per escludere problemi di stringhe maiuscole / minuscole / miste prima della ricerca. La normalizzazione dell'input dell'utente può essere eseguita come parte del processo di convalida dell'input, mantenendo il codice il più semplice e manutenibile possibile.
L'oggetto String è così fondamentale per Java che ogni classe, essendo derivata dalla classe radice chiamata Object (java.lang.Object), ha un metodo toString () per creare una rappresentazione di stringa utile del loro valore. Le classi che non hanno una rappresentazione di stringa ragionevole di solito restituiscono alcune informazioni di identificazione o di debug sul tipo di classe. Quelli che hanno una rappresentazione stringa ragionevole, come una stringa numerica da un oggetto Integer, restituiscono la rappresentazione testuale del numero incapsulato. Quando è concatenato con una stringa, ad esempio con l'operatore più (+) sopra descritto, i risultati del metodo toString () vengono utilizzati per impostazione predefinita. Per esempio:
Intero iNum = new Integer (123); String sText = "Il numero uno-due-tre ="; String sFullText = sText + iNum; String sFullText2 = sText + iNum.toString ();
Entrambe le stringhe (sFullText e sFullText2) hanno lo stesso valore, "Il numero uno-due-tre = 123". Molti di questi oggetti possono funzionare anche al contrario. In altre parole, possono analizzare una rappresentazione String e convertirla nel tipo nativo rappresentato dall'oggetto. Per instace, sempre con la classe Integer, è possibile utilizzare il metodo parseInt () per ottenere un nuovo oggetto Integer basato sulla rappresentazione della stringa.
Come hai visto, le stringhe possono essere utilizzate con grande effetto. Tuttavia, la creazione e la manipolazione di stringhe presentano alcuni inconvenienti. La manipolazione impropria della stringa può avere implicazioni di prestazioni negative per l'applicazione. È un principio di base di Java per non creare oggetti che non ti servono. È possibile vedere che la manipolazione e le modifiche alle stringhe possono determinare il fluttuazione di molte variabili String. Ecco alcuni suggerimenti per un buon utilizzo delle stringhe:
Le stringhe sono un tipo di dati importante che gli sviluppatori di Android utilizzano per memorizzare dati testuali. I dati di stringa, che si tratti di una sequenza di caratteri, numeri, simboli o una combinazione di essi, possono essere memorizzati in vari modi, ma la classe String è la classe di utilità primaria utilizzata per questo scopo. La classe String, e le sue classi helper come StringBuilder, contengono un robusto set di metodi da usare con le stringhe, permettono che i loro contenuti vengano ricercati o modificati.
Gli sviluppatori mobili Lauren Darcey e Shane Conder hanno coautore diversi libri sullo sviluppo di Android: un libro di programmazione approfondito intitolato Sviluppo di applicazioni wireless Android e Sams TeachYourself Sviluppo di applicazioni Android in 24 ore. Quando non scrivono, passano il loro tempo a sviluppare software mobile presso la loro azienda ea fornire servizi di consulenza. Possono essere contattati via email a [email protected], tramite il loro blog su androidbook.blogspot.com e su Twitter @androidwireless.