salut, comment pourrions-nous trouver les documents qui répertorient toutes les propriétés et fonctions possibles de l'objet tableau? Je ne parle pas de l'objet Arrays, qui est le seul document que je puisse trouver.
En outre, il est probablement utile de noter que si vous avez un tableau multidimensionnel, vous pouvez obtenir la dimension respective simplement en ajoutant un «[0]» au tableau que vous interrogez jusqu'à ce que vous arriviez à l'axe / tuple / dimension approprié.
Ceci est probablement mieux expliqué avec le code suivant:
publicclassTest{publicstaticvoid main(String[] args){String[][] moo =newString[5][12];System.out.println(moo.length);//Prints the size of the First Dimension in the arraySystem.out.println(moo[0].length);//Prints the size of the Second Dimension in the array}}
c'est une propriété publique et définitive. C'est définitif car les tableaux en Java sont immuables par leur taille (mais mutables par la valeur de l'élément)
Juste pour pinailler. Mais je crois que les tableaux ne sont PAS des objets en Java - ils sont l'un des deux types de variables de référence. L'autre étant des objets.
jabbie
2
@jabbie: Vraiment? Avez-vous une référence pour cela? Je le conteste uniquement parce que vous pouvez dire Object o = new String [] {"hello"};
Simon Nickerson
simon je pense que la raison pour laquelle cette déclaration fonctionne est parce qu'ils ont introduit les classes réflexives pour tous les types primitifs.
merci de ne pas entrer dans les détails techniques sur ce que cela pourrait être ou non, et de simplement fournir une réponse courte et concise. +1 pour vous. :)
Cela devrait être mis à jour dans la question s'il s'agit d'une clarification.
Whitecat le
5
La réponse est "Tous". Un tableau java est alloué avec un nombre fixe d'emplacements d'élément. L'attribut "longueur" vous indiquera combien. Ce nombre est immuable pour la durée de vie de la baie. Pour un équivalent redimensionnable, vous avez besoin de l'une des classes java.util.List - où vous pouvez utiliser la méthode size () pour savoir combien d'éléments sont utilisés.
Cependant, il y a "En cours d'utilisation", puis il y a En cours d'utilisation . Dans un tableau d'objets de classe, vous pouvez avoir des emplacements d'élément dont les éléments sont des objets nuls, donc même s'ils comptent dans l'attribut length, mais dans les définitions de la plupart des gens, ils ne sont pas utilisés (YMMV, selon l'application). Il n'y a pas de fonction intégrée pour renvoyer les nombres nuls / non nuls.
Les objets de liste ont encore une autre définition de "En cours d'utilisation". Pour éviter une création / destruction excessive des structures de stockage sous-jacentes, il y a généralement un remplissage dans ces classes. Il est utilisé en interne, mais n'est pas compté dans la méthode size () renvoyée. Et si vous essayez d'accéder à ces éléments sans développer la liste (via les méthodes d'ajout), vous obtiendrez une exception d'index illégale.
Ainsi, pour les listes, vous pouvez avoir "En cours d'utilisation" pour les éléments non nuls, validés, Tous les éléments validés (y compris les éléments nuls) ou Tous les éléments, y compris l'espace d'expansion actuellement alloué.
Toutes les réponses ci-dessus sont correctes. La chose importante à observer est que les tableaux ont un attribut length mais pas une méthode length. Chaque fois que vous utilisez des chaînes et des tableaux en java, les trois modèles de base auxquels vous pourriez être confronté sont:
String s = new String ("vidyasagar");
System.out.println (s.length ()); // Dans ce cas, nous utilisons uniquement String. Aucun attribut de longueur pour les chaînes. nous devons utiliser la méthode length ().
int [] s = nouveau int [10]; System.out.println (à la longueur); // ici, nous utilisons l'attribut length des tableaux.
Chaîne [] s = nouvelle chaîne [10];
System.out.println (à la longueur); // Ici, même si le type de données est String, ce n'est pas une seule chaîne. s est une référence pour un tableau de chaînes. Nous utilisons donc l'attribut length des tableaux pour exprimer combien de chaînes peuvent tenir dans ce tableau.
Ce n'est pas vraiment la réponse à votre question, mais si vous voulez avoir quelque chose comme un tableau qui peut croître et se réduire, vous ne devriez pas utiliser un tableau en java. Vous êtes probablement le meilleur en utilisant ArrayList ou une autre implémentation de List.
Vous pouvez ensuite appeler size () dessus pour obtenir sa taille.
Réponses:
Oui,
.length
(comme une propriété, pas une méthode):la source
C'est en fait un dernier membre du tableau, pas une méthode.
la source
En outre, il est probablement utile de noter que si vous avez un tableau multidimensionnel, vous pouvez obtenir la dimension respective simplement en ajoutant un «[0]» au tableau que vous interrogez jusqu'à ce que vous arriviez à l'axe / tuple / dimension approprié.
Ceci est probablement mieux expliqué avec le code suivant:
Qui produit la sortie:
la source
Propriété finale array.length
c'est une propriété publique et définitive. C'est définitif car les tableaux en Java sont immuables par leur taille (mais mutables par la valeur de l'élément)
la source
Les tableaux sont des objets et ils ont un champ de longueur.
Chaîne [] haha = {"olle", "bulle"};
haha.length serait 2
la source
En java, il existe un
length
champ que vous pouvez utiliser sur n'importe quel tableau pour connaître sa taille:la source
Si vous voulez qu'une fonction le fasse
Cela peut être utile si vous ne savez pas quel type de tableau vous avez, par exemple int [], byte [] ou Object [].
la source
Il y a une différence entre la longueur de
String
etarray
pour clarifier:la source
La réponse est "Tous". Un tableau java est alloué avec un nombre fixe d'emplacements d'élément. L'attribut "longueur" vous indiquera combien. Ce nombre est immuable pour la durée de vie de la baie. Pour un équivalent redimensionnable, vous avez besoin de l'une des classes java.util.List - où vous pouvez utiliser la méthode size () pour savoir combien d'éléments sont utilisés.
Cependant, il y a "En cours d'utilisation", puis il y a En cours d'utilisation . Dans un tableau d'objets de classe, vous pouvez avoir des emplacements d'élément dont les éléments sont des objets nuls, donc même s'ils comptent dans l'attribut length, mais dans les définitions de la plupart des gens, ils ne sont pas utilisés (YMMV, selon l'application). Il n'y a pas de fonction intégrée pour renvoyer les nombres nuls / non nuls.
Les objets de liste ont encore une autre définition de "En cours d'utilisation". Pour éviter une création / destruction excessive des structures de stockage sous-jacentes, il y a généralement un remplissage dans ces classes. Il est utilisé en interne, mais n'est pas compté dans la méthode size () renvoyée. Et si vous essayez d'accéder à ces éléments sans développer la liste (via les méthodes d'ajout), vous obtiendrez une exception d'index illégale.
Ainsi, pour les listes, vous pouvez avoir "En cours d'utilisation" pour les éléments non nuls, validés, Tous les éléments validés (y compris les éléments nuls) ou Tous les éléments, y compris l'espace d'expansion actuellement alloué.
la source
Toutes les réponses ci-dessus sont correctes. La chose importante à observer est que les tableaux ont un attribut length mais pas une méthode length. Chaque fois que vous utilisez des chaînes et des tableaux en java, les trois modèles de base auxquels vous pourriez être confronté sont:
System.out.println (s.length ()); // Dans ce cas, nous utilisons uniquement String. Aucun attribut de longueur pour les chaînes. nous devons utiliser la méthode length ().
System.out.println (à la longueur); // Ici, même si le type de données est String, ce n'est pas une seule chaîne. s est une référence pour un tableau de chaînes. Nous utilisons donc l'attribut length des tableaux pour exprimer combien de chaînes peuvent tenir dans ce tableau.
la source
Ce n'est pas vraiment la réponse à votre question, mais si vous voulez avoir quelque chose comme un tableau qui peut croître et se réduire, vous ne devriez pas utiliser un tableau en java. Vous êtes probablement le meilleur en utilisant ArrayList ou une autre implémentation de List.
Vous pouvez ensuite appeler size () dessus pour obtenir sa taille.
la source