Longueur du tableau en Java

101

J'ai déclaré un tableau comme indiqué ci-dessous:

int[] arr = new int[10];

Ensuite, j'ai attribué les valeurs suivantes au tableau:

arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;

Ensuite, j'ai déclaré et initialisé une variable entière:

int arrayLength = arr.length;

Cela sera utile pour trouver la taille réelle, mais existe-t-il une méthode pour trouver la taille logique du tableau?

Kiran Bhat
la source

Réponses:

86

Il contient la taille allouée, 10. Les index non attribués contiendront la valeur par défaut qui est 0pour int.

Kai
la source
3
Oui, les tableaux sont une allocation de mémoire statique.
Ramon Saraiva
3
Pouvez-vous montrer le javadoc? Je ne sais pas où se trouve cette propriété "length".
Philip Rego
1
@PhilipRego C'est dans la spécification du langage docs.oracle.com/javase/specs/jls/se8/html/jls-10.html#jls-10.3
Torben
71

Tout d'abord, lengthc'est une propriété, donc ce serait arr.lengthau lieu de arr.length().

Et il renverra 10, la taille déclarée. Les éléments que vous ne déclarez pas explicitement sont initialisés à 0.

Costi Ciudatu
la source
Impossible d'appeler length () sur le type de tableau long [] Java (67108980)
Alessandro Ornano
22

Pour trouver la longueur d'un tableau, Avous devez utiliser la lengthpropriété. C'est comme A.length, ne l'utilisez pas A.length()principalement pour la taille des objets liés à la chaîne.

entrez la description de l'image ici

La propriété length affichera toujours l'espace total alloué au tableau lors de l'initialisation.

Si jamais vous rencontrez l'un de ces types de problèmes, le moyen le plus simple est de l'exécuter. Bonne programmation!

Ravi Pandey
la source
6

Les tableaux sont une allocation de mémoire statique, donc si vous initialisez un tableau d'entiers:

int[] intArray = new int[15];

La longueur sera toujours de 15, quel que soit le nombre d'index remplis.

Et autre chose, lorsque vous initialisez un tableau d'entiers, tous les index seront remplis avec "0".

Ramon Saraiva
la source
5

En Java, votre taille "réelle" et "logique" est la même. Le run-time remplit tous les emplacements de tableau avec des valeurs par défaut lors de l'allocation. Donc, votre acontient 10.

Poignard
la source
5

Dans ce cas, arr.length renverra 10, la taille du tableau que vous avez alloué. La taille logique ne s'applique pas vraiment ici, car il s'agit d'un tableau de longueur fixe.

Lorsque vous initialisez la baie:

int[] arr = new int[10];

Java créera un tableau avec 10 éléments et initialisera tous ceux-ci à 0. Voir la spécification du langage Java pour plus de détails sur les valeurs initiales de ce type et d'autres types primitifs.

Tom Elliott
la source
4
int[] arr = new int[10];

arrest un inttableau de type qui a une taille 10. C'est un tableau d' 10éléments. Si nous n'initialisons pas un tableau par défaut, les éléments du tableau contiennent la valeur par défaut. Dans le cas d'un tableau int, la valeur par défaut est 0.

length est une propriété applicable à un tableau.
ici arr.lengthdonnera 10.

Anil
la source
3

»

tableau int [] = nouveau int [3]; array.length;

donc ici nous avons créé un tableau avec un espace mémoire de 3 ... c'est à quoi ça ressemble en fait

0e 1er 2e ...........> Index 2 4 5 ...........> Numéro

Donc, comme vous le voyez, la taille de ce tableau est de 3 mais l'indice du tableau n'est que de 2 puisque tout tableau commence par le 0ème index.

La sortie de la deuxième instruction doit être 3 puisque la longueur du tableau est 3 ... Veuillez ne pas confondre la valeur d'index et la longueur du tableau ....

à votre santé!

Ayush Murty AH
la source
2
  int arr[]={4,7,2,21321,657,12321};
  int length =arr.length;
  System.out.println(length); // will return 6

  int arr2[] = new int[10];
   arr2[3] = 4;
  int length2 =arr2.length;
  System.out.println(length2); // // will return 10. all other digits will be 0 initialize because staic memory initialization
alok
la source
1

Il contiendra la taille réelle du tableau car c'est ce à quoi vous avez initialisé le tableau lorsque vous l'avez déclaré. Java n'a aucune notion de la taille «logique» d'un tableau, en ce qui le concerne, la valeur par défaut de 0 est tout aussi logique que les valeurs que vous avez définies manuellement.

Turix
la source
1

Il contient la taille allouée, 10. Les index restants contiendront la valeur par défaut qui est 0.

Nikhil Kumar
la source
1

Si vous voulez la taille logique du tableau, vous pouvez parcourir toutes les valeurs du tableau et les comparer à zéro. Incrémentez la valeur si elle n'est pas égale à zéro et que ce serait la taille logique. Étant donné que la taille du tableau est fixe, vous ne disposez d'aucune méthode intégrée, vous devriez peut-être jeter un œil aux collections.

Struse
la source
Ceci est juste une taille "Je suppose que 0 n'est pas une valeur valide" et si cela est utile, c'est un peu douteux.
Tom
Je viens de proposer une idée pour obtenir la longueur du tableau (les 0 ne sont pas valides). Comme je l'ai dit, vous pouvez utiliser des collections pour une manipulation plus précise des données.
Struse
1

Ça devrait être:

int a = arr.length;

Les parenthèses doivent être évitées.

Godlu
la source
5
Bienvenue dans le débordement de pile! Puisqu'il s'agit d'une question vieille de plus d'un an et qui a déjà six autres réponses, je m'attendrais à une réponse plus longue que celle-ci. De plus, vous ne répondez pas au point de la question - vous corrigez simplement une faute de frappe qui a déjà été ciblée dans une réponse (qui répond à la question) et un commentaire de question.
John Dvorak
0

Les tableaux Java sont en fait de taille fixe, et les autres réponses expliquent comment .length ne fait pas vraiment ce que vous attendez. Je voudrais simplement ajouter que compte tenu de votre question, ce que vous pourriez vouloir utiliser est une ArrayList, c'est-à-dire un tableau qui peut croître et se réduire:

https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html

Ici, la méthode .size () vous montrera le nombre d'éléments dans votre liste, et vous pourrez l'augmenter au fur et à mesure que vous ajoutez des éléments.

Draxil
la source
0

si vous entendez par "taille logique", l'indice du tableau, alors simplement int arrayLength = arr.length-1; puisque l'index du tableau commence par "0", donc l'index logique ou "index du tableau" sera toujours inférieur à la taille réelle de "un".

Salah
la source
0

Les tableaux se voient allouer de la mémoire au moment de la compilation en java, ils sont donc statiques, les éléments non explicitement définis ou modifiés sont définis avec les valeurs par défaut. Vous pouvez utiliser un code comme celui-ci, bien que cela ne soit pas recommandé car il ne compte pas les valeurs par défaut, même si vous les initialisez explicitement de cette façon, il est également susceptible de provoquer des bogues sur toute la ligne. Comme d'autres l'ont dit, lors de la recherche de la taille réelle, ".length" doit être utilisé à la place de ".length ()".

public int logicalArrayLength(type[] passedArray) {
    int count = 0;
    for (int i = 0; i < passedArray.length; i++) {
        if (passedArray[i] != defaultValue) {
            count++;
        }
    }
    return count;
}
Poobean
la source