De Java String[] à Kotlin : guide complet pour débutants

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : Pourquoi cette question tourmente tous ceux qui passent de Java à Kotlin

\n\n

Vous venez de commencer à apprendre Kotlin après Java et vous avez déjà rencontré votre première surprise ? Vous essayez de déclarer un tableau de chaînes comme vous en aviez l'habitude en Java — String[] names = {"Alice", "Bob"} — et le compilateur Kotlin affiche une erreur ? Félicitations, vous n'êtes pas seul. La question "What's the Kotlin equivalent of Java's String[]?" a recueilli des milliers de vues sur Stack Overflow, et ce n'est pas un hasard.

\n\n

Kotlin n'est pas simplement « Java avec du sucre ». Google le positionne comme un langage plus moderne, plus sûr et plus concis. Mais cette concision déroute parfois les débutants. En Java, un tableau est une construction intégrée au langage. En Kotlin, les tableaux font partie de la bibliothèque standard et ont leurs propres subtilités.

\n\n

Dans cet article, nous allons décortiquer tout ce qu'il faut savoir sur les tableaux de chaînes en Kotlin. Vous découvrirez non seulement l'équivalent direct de String[], mais aussi des alternatives plus flexibles qui rendront votre code plus propre et plus sûr. C'est parti !

\n\n

1. L'équivalent direct : Array<String>

\n\n

La façon la plus simple et la plus évidente de remplacer String[] en Kotlin est d'utiliser Array<String>. En Kotlin, tous les tableaux sont des objets de la classe Array<T>, où T est le type des éléments.

\n\n

Comment déclarer et initialiser ?

\n\n

En Java, vous écrivez :

\n
String[] names = new String[3];\nnames[0] = "Alice";\nnames[1] = "Bob";\nnames[2] = "Charlie";
\n\n

En Kotlin, cela ressemble à ceci :

\n
val names: Array<String> = arrayOfNulls(3)\nnames[0] = "Alice"\nnames[1] = "Bob"\nnames[2] = "Charlie"
\n\n

Mais il existe une façon bien plus courte : utiliser la fonction arrayOf() :

\n
val names = arrayOf("Alice", "Bob", "Charlie")
\n\n

Le compilateur Kotlin déduit lui-même le type Array<String>. Notez : contrairement à Java, Kotlin n'utilise pas l'opérateur new pour créer des tableaux. À la place, on utilise des fonctions d'usine.

\n\n

Différence importante : taille fixe

\n\n

Comme en Java, la taille de Array<String> est fixe. Vous ne pouvez pas ajouter un nouvel élément après sa création. Si vous tentez d'accéder à un index hors limites, vous obtiendrez une ArrayIndexOutOfBoundsException.

\n\n
val fruits = arrayOf("Pomme", "Banane")\n// fruits[2] = "Cerise" // Erreur ! Index hors limites
\n\n

2. Tableaux spécialisés : pas toujours Array<String>

\n\n

Pour les types primitifs (Int, Double, Boolean), Kotlin propose des classes optimisées : IntArray, DoubleArray, BooleanArray, etc. Elles n'utilisent pas l'auto-boxing/unboxing, ce qui économise de la mémoire et accélère l'exécution.

\n\n

Mais pour les chaînes, une telle optimisation n'existe pas, car String est un type référence, pas un type primitif. Donc Array<String> est la seule option si vous avez besoin d'un tableau.

\n\n

3. Alternative n°1 : List<String> (liste immuable)

\n\n

Dans la plupart des cas, vous n'avez pas besoin d'un tableau. En Kotlin, il est fortement recommandé d'utiliser des listes plutôt que des tableaux, sauf si vous travaillez avec du code bas niveau (par exemple, JNI ou optimisation des performances à l'échelle de la nanoseconde).

\n\n

La liste List<String> est une collection immuable. Vous ne pouvez ni modifier sa taille ni ses éléments après sa création. Cela rend le code plus sûr dans un environnement multithread.

\n\n
val namesList: List<String> = listOf("Alice", "Bob", "Charlie")\n// namesList[0] = "Eve" // Erreur ! listOf retourne une liste immuable
\n\n

En substance, listOf est l'équivalent Kotlin de Java String[] avec une protection supplémentaire. En Java, un tableau peut être accidentellement modifié en le passant à une autre méthode. En Kotlin, List ne le permet pas.

\n\n

4. Alt

Blogs

Book Recommendations