Considérez les questions suivantes avant de commencer cet article
Comment obtenir la longueur d'un tableau sans utiliser d'IDE avec une fonction de saisie semi-automatique? Et comment obtenir la longueur d'une chaîne?
J'ai demandé aux programmeurs de différents niveaux, y compris les niveaux junior et intermédiaire. Aucun d'eux ne peut répondre avec précision et en toute confiance à cette question (si vous pouvez répondre à cette question avec précision et avec confiance, cela prouve que vous êtes meilleur dans cette connaissance que la plupart des programmeurs intermédiaires). Étant donné que de nombreux IDE ont désormais des fonctions d'achèvement de code, les développeurs peuvent comprendre de nombreux problèmes très superficiellement.
La bonne réponse à la question ci-dessus devrait être la suivante:
int [] arr = new int [3]; System.out.println (arr.length); // Utilisez la longueur pour obtenir le degré de chaîne de tableau str = "ABC"; System.out.println (str.length ()); // utilise la longueur () pour obtenir la longueur de la chaîne
La question est donc: pourquoi le tableau a-t-il un attribut de longueur mais que la chaîne ne le fait pas? Ou, pourquoi les chaînes ont-elles length() , mais les tableaux ne le font pas?
Pourquoi Array a-t-il un attribut de longueur?
Tout d'abord, un tableau est un objet de conteneur qui contient un nombre fixe de valeurs du même type. Une fois le tableau créé, sa longueur est fixe. La longueur du tableau peut être utilisée comme longueur de la variable d'instance finale. Par conséquent, la longueur peut être considérée comme un attribut d'un tableau.
Il existe deux façons de créer un tableau:
1. Créez un tableau via des expressions de tableau.
2. Créez un tableau en initialisant les valeurs.
Quoi qu'il en soit, une fois le tableau créé, sa taille est fixée.
La méthode de création d'un tableau à l'aide d'une expression est la suivante, qui spécifie le type d'élément, la dimension du tableau et la longueur du tableau d'au moins une dimension.
Cette méthode de déclaration répond aux exigences car elle spécifie la longueur d'une dimension (le tableau a un type int, la dimension est 2 et la première dimension est 3)
int [] [] arr = new int [3] [];
Lors de la création d'un tableau à l'aide d'initialisation du tableau, vous devez fournir toutes les valeurs initiales. Le formulaire consiste à utiliser {et} pour enfermer toutes les valeurs initiales ensemble et les séparer.
int [] arr = {1,2,3};Note:
Il peut y avoir une question ici. Étant donné que la taille du tableau est spécifiée lorsqu'elle est initialisée, int[][] arr = new int[3][];定le tableau sans donner la taille de la deuxième dimension du tableau. Alors, comment la longueur de cet ARR est-elle "définie"?
En fait, la durée de l'ARR est 3. En fait, tous les tableaux en Java, peu importe le nombre de dimensions, sont en fait des tableaux unidimensionnels. Par exemple, ARR, 3 espaces sont alloués, chaque espace stocke l'adresse d'un tableau unidimensionnel, qui devient un tableau "bidimensionnel". Mais pour Arr, sa longueur est de 3.
int [] [] a = new int [3] []; system.out.println (a.length); // 3int [] [] b = new int [3] [5]; System.out.println (b.length); // 3
Pourquoi n'y a-t-il pas de classe de table comme une chaîne définie dans Java
Parce que les tableaux sont également des objets, le code suivant est également légal:
Objet obj = new int [10];
Le tableau contient toutes les méthodes héritées de l'objet (relation d'héritage des tableaux en Java), sauf clone (). Pourquoi n'y a-t-il pas de classe de table? Il n'y a pas de fichier array.java en java. Une explication simple est qu'elle est cachée (Remarque: Les tableaux en Java sont un peu similaires aux types de données de base, ils sont un type intégré et il n'y a pas de classe réelle qui y correspond). Vous pouvez réfléchir à cette question - s'il y a une classe de tableau, à quoi cela ressemblerait-il? Il aura toujours besoin d'un tableau pour stocker tous les éléments du tableau, non? Par conséquent, ce n'est pas une bonne idée de définir une classe de tableau. (Note du traducteur: ici peut être un peu déroutant, la raison est un peu similaire à: le problème des poulets nés avec des œufs et des poulets, et la métaphore peut ne pas être très appropriée, veuillez le comprendre par vous-même)
En fait, nous pouvons obtenir la définition de classe du tableau, via le code suivant:
int [] arr = new int [3]; System.out.println (arr.getClass ());
Sortir:
classe [je
"Class [i" représente la signature du type d'exécution de l'objet de classe dont le type de membre est un tableau d'intre "
Pourquoi String a-t-il une méthode Longueur ()?
La structure de données derrière String est un tableau char, il n'est donc pas nécessaire de définir une propriété inutile (car la propriété est déjà fournie dans la valeur de char). Contrairement à C, le tableau de char en Java n'est pas égal à une chaîne, bien que le mécanisme interne de la chaîne soit mis en œuvre par des tableaux de char. (Remarque: Dans le langage C, il n'y a pas de classe de chaîne et la définition des chaînes utilise généralement la forme de char string[6] = "hollis"; )
Remarque: il existe les moyens suivants de convertir Char [] en une chaîne:
char [] s = {'a', 'b', 'c'}; string string1 = s.toString (); string string2 = new String (s); string string3 = string.valueof (s);Résumer
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article sera utile à tout le monde dans l'apprentissage ou l'utilisation de Java. Si vous avez des questions, vous pouvez laisser un message pour communiquer.