Dans ce didacticiel, vous vous familiariserez avec l’une des plus importantes structures de données de programmation (types) de Java-the String. Les variables de chaîne peuvent être utilisées pour stocker les données textuelles (lettres, chiffres, symboles) associées à un programme.
Les applications Android sont écrites en Java, un langage de programmation. Java comporte un certain nombre de types de données primitifs pour différents types de nombres (nombres entiers, flottants, etc.), des valeurs booléennes et des caractères uniques. Outre le stockage de données textuelles sous forme de tableaux ou de caractères, Java inclut également une classe d'objet puissante appelée String (java.lang.String), qui encapsule parfaitement les données textuelles et peut être utilisée pour manipuler du contenu. Dans ce didacticiel, vous apprendrez à créer, utiliser et manipuler des chaînes de différentes manières, notamment à les stocker en tant que ressources de projet Android..
Techniquement, vous n'avez besoin d'aucun outil pour compléter ce didacticiel, mais vous en aurez certainement besoin pour développer des applications Android..
Pour développer des applications Android (ou des applications Java, d'ailleurs), vous avez besoin d'un environnement de développement pour écrire et créer des applications. Eclipse est un environnement de développement (IDE) très populaire pour Java et l'IDE préféré pour le développement Android. Il est disponible gratuitement pour les systèmes d'exploitation Windows, Mac et Linux..
Pour des instructions complètes sur l'installation d'Eclipse (y compris les versions prises en charge) et le SDK Android, voir le site Web du développeur Android..
Au niveau le plus fondamental, les programmes Java sont divisés en fonctionnalités et données. Une grande partie des données lisibles par l'homme se présente sous forme de mots, de caractères, de ponctuation, de chiffres, etc. Fondamentalement, tout ce que l'utilisateur peut taper sur un clavier. Les programmeurs appellent ce stockage de contenu textuel «données de chaîne», mais les données elles-mêmes peuvent être stockées à l'aide de différentes structures de données, en fonction de vos besoins:
Comme vous pouvez le constater, il existe de nombreuses façons de stocker des données de chaîne en Java. Par exemple, les variables Java suivantes représentent une chaîne de caractères de voyelle de différentes manières (octets, caractères, représentations Unicode ou sous-chaînes):
String strVowels = "aeiou"; char astrVowels [] = 'a', 'e', 'i', 'o', 'u'; octet abyteVowels [] = 'a', 'e', 'i', 'o', 'u'; octet 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 ("eio"); sVowelBuilder.append ('\ u0075');
La classe String est la classe de confort la plus utilisée, en particulier par les débutants. Vous voudrez également avoir une compréhension passagère de l'interface CharSequence (java.lang.CharSequence), car elle est souvent utilisée lorsque vous travaillez avec des ressources Android..
La classe String est disponible dans le package java.lang, inclus dans le SDK Android à l’usage des développeurs. La documentation complète de la classe String est disponible dans la documentation du SDK Android..
La classe String représente une séquence immuable (non modifiable) de caractères Unicode (codage 16 bits), appropriée pour stocker des caractères dans n'importe quelle langue (anglais, allemand, japonais, etc.)..
Alors, qu'est-ce que cela a à voir avec le développement Android? Les chaînes sont utilisées pour stocker le contenu affiché sur les écrans de l'application ou pour stocker les données saisies par un utilisateur. Les développeurs Android chargent, créent et manipulent en permanence des données de chaîne. Alors regardons quelques-unes des choses que nous pouvons faire avec la classe String.
La classe String a de nombreux constructeurs pour créer et instancier des variables de chaîne. Les variables de chaîne peuvent être définies pour se vider à l'aide du mot clé null. Vous pouvez également définir son contenu à partir d'octets, de caractères ou d'autres données de chaîne. Par exemple, voici quelques façons de créer des variables String à utiliser dans vos applications (certaines sont initialisées à partir de variables, telles que uVowels et sVowelBuilder, définies précédemment dans ce didacticiel):
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 (nouveau caractère [] '\ u0061', '\ u0065', '\ u0069', '\ u006F', '\ u0075'); String strVowels10 = new String (nouveau byte [] '\ u0061', '\ u0065', '\ u0069', '\ u006F', '\ u0075');
Vous pouvez également charger des chaînes à partir de ressources d'application Android, à condition de les avoir correctement stockées. Par exemple, vous pouvez charger la ressource chaîne pour le nom de l'application dans une variable chaîne comme suit:
String strAppName = getResources (). GetString (R.string.app_name);
Cela nécessite que l'application Android en question contienne une ressource chaîne nommée app_name quelque part dans la hiérarchie des répertoires du projet / res / values. Par exemple, un fichier appelé /res/values/strings.xml qui contient la définition de chaîne XML suivante:
Nom de mon application Android!
Examinons maintenant certaines choses intéressantes que vous pouvez faire avec les objets String. Tout d'abord, concentrons-nous sur les fonctionnalités disponibles dans la classe String elle-même..
Il est utile de considérer une chaîne comme une séquence de caractères. En tant que tel, vous souhaitez parfois parcourir son contenu, un caractère à la fois. Il existe de nombreuses façons de le faire, mais une méthode simple consiste à utiliser une boucle for (). Vous pouvez tirer parti de la méthode String's length () pour déterminer le nombre de caractères dont vous disposez et de la méthode charAt () pour extraire un caractère spécifique à l'aide de son index, à la manière d'un index de tableau. Par exemple:
String strVowels = "AEIOU"; pour (int i = 0; i < strVowels.length(); i++) char curChar = strVowels.charAt(i);
Comme mentionné précédemment, les variables de chaîne sont immuables ou non modifiables. Cela ne veut pas dire que vous ne pouvez pas manipuler le contenu textuel d'une variable String, mais chaque méthode qui le fait retourne une nouvelle variable String. Voici des exemples courants de méthodes de classe String générant de nouvelles variables String:
Gardez à l’esprit que chacune de ces méthodes alloue une Nouveau Instance d'objet de chaîne pour stocker le résultat. La variable String d'origine reste inchangée.
Parfois, vous souhaitez convertir votre chaîne en majuscule ou en minuscule. Une des raisons pour lesquelles vous souhaiterez peut-être modifier la casse d'une chaîne est de la normaliser pour rendre la recherche ou la correspondance peu sensible à la casse plus facile à mettre en œuvre..
String strUpperCaseVersion = strVowels.toUpperCase (); String strLowerCaseVersion = strVowels.toLowerCase ();
Notez que vous avez créé deux nouvelles variables String à utiliser. La variable String d'origine, strVowels, reste inchangée.
Parfois, vous souhaitez analyser rapidement une chaîne en sous-chaînes. Pour ce faire, vous pouvez extraire les mots individuels d'une phrase, d'une liste de balises délimitée, etc. Vous pouvez utiliser des expressions régulières simples avec la fonction split () à cette fin. Par exemple, le code suivant extrait les mots individuels (couleurs) d'une chaîne:
String someWords = "Rouge Orange Jaune Vert Bleu Indigo"; String aColors [] = someWords.split ("");
Si vous deviez imprimer le contenu du tableau String appelé aColors, vous verriez que:
aColors [0] = rouge aColors [1] = orange aColors [2] = jaune aColors [3] = vert aColors [4] = bleu aColors [5] = indigo
Notez que vous venez de créer un nouveau tableau contenant 6 nouvelles variables String à utiliser..
Vous pouvez vérifier si deux chaînes correspondent en utilisant la méthode compareTo () de la classe String. Cette méthode retournera 0 si, et seulement si, les deux chaînes sont identiques:
String strVowels = "AEIOU"; if (strVowels.compareTo ("AEIOU") == 0) // Les chaînes correspondent! (Ce code sera exécuté) else // Les chaînes ne correspondent pas!
Notez que la méthode compareTo () est sensible à la casse. Pensez à convertir les deux côtés de votre comparaison en un cas avant de les comparer, à moins que vous ne recherchiez spécifiquement un cas. Si vous ne vous souciez pas de la casse, vous pouvez également utiliser la méthode compareToIgnoreCase () à la place de la méthode compareTo ():
String strVowels = "AEIOU"; if (strVowels.compareToIgnoreCase ("aeiou") == 0) // Les chaînes correspondent! (Ce code sera exécuté) else // Les chaînes ne correspondent pas!
Parfois, vous souhaitez rechercher une chaîne pour un caractère ou une sous-chaîne. Il existe de nombreuses autres manières d'effectuer une correspondance et une recherche de chaîne, vous permettant de créer les méthodes de recherche souhaitées. Vous pouvez également rechercher des caractères ou des sous-chaînes spécifiques à l'aide des méthodes indexOf () et lastIndexOf (), vérifier si une chaîne commence ou se termine par une sous-chaîne à l'aide des méthodes startsWith () et endsWith () Enfin, la méthode matches () prend en charge la correspondance d’expression régulière.
Ici, nous utilisons la méthode includes () pour déterminer s’il existe une sous-chaîne spécifique:
if (strVowels.contains ("IOU") == true) // La chaîne contient la sous-chaîne IOU!
Si vous ne vous souciez pas de la casse, utilisez plutôt la méthode compareToIgnoreCase ():
String strVowels = "AEIOU"; if (strVowels. compareToIgnoreCase ("aeiou") == 0) // Les chaînes correspondent! (Ce code sera exécuté) else // Les chaînes ne correspondent pas!
CONSEIL: lorsque vous implémentez des fonctionnalités de correspondance et de recherche dans vos applications, n'oubliez pas de manipuler les chaînes de prétraitement nécessaires pour éliminer les problèmes de chaînes majuscules / minuscules / mixtes avant la recherche. La normalisation des entrées utilisateur peut être effectuée dans le cadre du processus de validation des entrées, afin que votre code soit aussi simple et maintenable que possible..
L'objet String est si fondamental en Java que chaque classe, du fait qu'elle est dérivée de la classe racine appelée Object (java.lang.Object), dispose d'une méthode toString () pour créer une représentation sous forme de chaîne utile de leur valeur. Les classes qui n'ont pas une représentation de chaîne raisonnable renvoient généralement des identifiants ou des informations de débogage quant au type de classe. Ceux qui ont une représentation de chaîne raisonnable, telle qu'une chaîne numérique issue d'un objet Integer, renvoient la représentation textuelle du nombre encapsulé. Lorsqu'ils sont concaténés avec une chaîne, comme avec l'opérateur plus (+) décrit ci-dessus, les résultats de la méthode toString () sont utilisés par défaut. Par exemple:
Integer iNum = new Integer (123); String sText = "Le nombre un-deux-trois ="; String sFullText = sText + iNum; String sFullText2 = sText + iNum.toString ();
Les deux chaînes (sFullText et sFullText2) ont la même valeur, "Le nombre un-deux-trois = 123". Beaucoup de ces objets peuvent également fonctionner en sens inverse. En d’autres termes, ils peuvent analyser une représentation String et la convertir en type natif que l’objet représente. Pour instace, toujours avec la classe Integer, la méthode parseInt () peut être utilisée pour obtenir un nouvel objet Integer basé sur la représentation de chaîne.
Comme vous l'avez vu, les chaînes peuvent être utilisées à bon escient. La création et la manipulation de chaînes présentent toutefois certains inconvénients. Une manipulation imprudente des chaînes peut avoir des conséquences négatives sur les performances de votre application. L’un des principes de base de la conception de Java est de ne pas créer d’objets inutiles. Vous pouvez voir que la manipulation et les modifications de chaînes peuvent entraîner de nombreuses variables de chaîne flottantes. Voici quelques conseils pour bien utiliser les chaînes:
Les chaînes sont un type de données important que les développeurs Android utilisent pour stocker des données textuelles. Les données de chaîne, qu'il s'agisse d'une séquence de caractères, de nombres, de symboles ou d'une combinaison de celles-ci, peuvent être stockées de différentes manières, mais la classe String est la principale classe d'utilitaire utilisée à cette fin. La classe String, et ses classes auxiliaires telles que StringBuilder, contiennent un ensemble robuste de méthodes à utiliser avec des chaînes, autorisant la recherche ou la modification de leur contenu..
Les développeurs mobiles Lauren Darcey et Shane Conder ont co-écrit plusieurs livres sur le développement Android: un livre de programmation en profondeur intitulé Développement d'applications sans fil Android et Sams TeachYourself Développement d'applications Android en 24 heures. Lorsqu'ils n'écrivent pas, ils passent leur temps à développer des logiciels mobiles dans leur entreprise et à fournir des services de conseil. Vous pouvez les contacter par courrier électronique à l'adresse [email protected], via leur blog à l'adresse androidbook.blogspot.com et sur Twitter @androidwireless..