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?

Réponses:



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.


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!


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


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.


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.


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.


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é!


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

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.


1

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


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.


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.


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.


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


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;
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.