Apprendre Java pour le développement Android Notions de base sur les chaînes

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..

Ce dont vous aurez besoin

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..

Qu'est-ce qu'une corde??

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:

  • La classe Java String (java.lang.String) est une classe utilitaire permettant de stocker des données de chaîne qui ne seront pas modifiées..
  • La classe Java StringBuilder (java.lang.StringBuilder) est une classe utilitaire permettant de stocker des données de chaîne qui seront modifiées. utilisé lorsque la simultanéité n'est pas un problème.
  • La classe Java StringBuffer (java.lang.StringBuffer) est une classe utilitaire permettant de stocker des données de chaîne qui seront modifiées. utilisé lorsque la concurrence est un problème.
  • Un tableau de primitives de caractère ou de variables de caractère (java.lang.Character)
  • Un tableau de primitives d'octet ou de variables Byte (java.lang.Byte)
  • Diverses autres structures de données et classes d'objets peuvent être utilisées pour stocker des données de chaîne.

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..

Travailler avec la classe de cordes

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.

Créer des cordes

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'); 

Utilisation des ressources de chaîne Android

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! 

Itération de chaîne simple

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);  

Modifications de chaîne: les bases

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:

  • La méthode concat () est utilisée pour concaténer ou combiner deux chaînes dans un nouvel objet String. Remarque: vous pouvez également utiliser l'opérateur + pour créer un nouvel objet String à partir de pièces..
  • La méthode format () vous permet de créer des modèles de chaîne paramétrés (un sujet plus avancé pour une discussion ultérieure)
  • Les méthodes replace () et replaceFirst () permettent de remplacer un caractère ou une sous-chaîne par une autre sous-chaîne. La méthode replaceAll () prend en charge la correspondance de modèle d'expression régulière.
  • La méthode split () est utile pour fractionner une chaîne plus grande en plusieurs sous-chaînes. Par exemple, vous pouvez diviser une liste délimitée par des virgules en un tableau d’objets String, un pour chaque élément de la liste..
  • La méthode substring () est utilisée pour extraire uniquement une partie de l'objet String d'origine.
  • Les méthodes toUpperCase () et toLowerCase () permettent de changer la casse de String, ce qui est particulièrement utile pour normaliser les chaînes..
  • La méthode trim () est utilisée pour pirater (supprimer) tout espace blanc avant ou après le contenu de la chaîne.

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.

Modifications de chaîne: Conversion en majuscules et minuscules

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.

Modifications de chaîne: Fractionnement

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..

Correspondance de chaîne simple

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!  

Recherche de chaîne simple

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..

Chaînes et autres types de données

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.

Cordes et Performance

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:

  • Ne créez pas de variables String dont vous n'avez pas besoin, surtout temporaires.
  • Utilisez les classes StringBuilder et StringBuffer pour générer un contenu de chaîne à partir de zéro.
  • Consultez les suggestions de performances disponibles sur le site Web des développeurs Android..
  • Utiliser les constantes de chaîne statiques finales pour les valeurs de chaîne connues au moment de la compilation.

Emballer

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..

à propos des auteurs

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..

Besoin d'aide pour écrire des applications Android? Consultez nos derniers livres et ressources!