web-dev-qa-db-fra.com

Java Tableau de chaînes: existe-t-il une taille de méthode?

Je viens d'un fond php et en php, il y a une fonction array_size() qui vous indique le nombre d'éléments utilisés dans le tableau.

Existe-t-il une méthode similaire pour un tableau String[]? Merci.

149
phill

Oui, .length (propriété, pas une méthode):

String[] array = new String[10];
int size = array.length;
272
Kris
array.length

C'est en fait un dernier membre du tableau, pas une méthode.

44
jjnguy

De plus, il est probablement utile de noter que si vous avez un tableau multidimensionnel, vous pouvez obtenir la dimension respective en ajoutant simplement un [[0] '] au tableau que vous interrogez jusqu'à ce que vous arriviez à l'axe/le nuplet/la dimension appropriés.

Ceci est probablement mieux expliqué avec le code suivant:

public class Test {
    public static void main(String[] args){
        String[][] moo = new String[5][12];

        System.out.println(moo.length); //Prints the size of the First Dimension in the array
        System.out.println(moo[0].length);//Prints the size of the Second Dimension in the array
    }

}

Qui produit la sortie:

5
12
19
Liang

propriété array.length final

c'est une propriété publique et finale. Il est définitif car les tableaux de Java sont immuables par taille (mais modifiables par la valeur de l'élément)

15
dfa

Les tableaux sont des objets et ils ont un champ de longueur.

String [] haha ​​= {"olle", "bulle"};

haha.long serait de 2

14

Dans Java, il existe un champ length que vous pouvez utiliser sur n’importe quel tableau pour déterminer sa taille:

    String[] s = new String[10];
    System.out.println(s.length);
11
bruno conde

Si vous voulez une fonction pour le faire

Object array = new String[10];
int size = Array.getlength(array);

Cela peut être utile si vous ne savez pas quel type de tableau vous avez, par exemple. int [], byte [] ou Object [].

9
Peter Lawrey

La réponse est "tous". Un tableau Java est alloué avec un nombre fixe d'emplacements d'élément. L'attribut "longueur" vous dira combien. Ce nombre est immuable pour la vie du tableau. Pour obtenir un équivalent redimensionnable, vous avez besoin d’une des classes Java.util.List, où vous pouvez utiliser la méthode size () pour déterminer le nombre d’éléments utilisés.

Cependant, il y a "En cours d'utilisation" et 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. Ainsi, même s'ils comptent dans l'attribut length, ils ne sont pas utilisés par la plupart des définitions (YMMV, selon l'application). Il n'y a pas de fonction intégrée pour renvoyer les comptes null/non-null.

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, ces classes contiennent généralement des éléments de remplissage. 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 validés non nuls, Tous les éléments validés (y compris les éléments nuls) ou Tous les éléments, y compris l'espace d'expansion alloué.

5
Tim H

Il y a une différence entre longueur de String et array pour clarifier:

int a[] = {1, 2, 3, 4};
String s = "1234";

a.length //gives the length of the array

s.length() //gives the length of the string
5
Valona

Toutes les réponses ci-dessus sont correctes. La chose importante à observer est que les tableaux ont un attribut de longueur mais pas la méthode de la longueur. Lorsque vous utilisez des chaînes et des tableaux dans Java, les trois modèles de base auxquels vous pouvez être confronté sont les suivants:

  1. 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 ().
  2. int [] s = nouveau int [10]; System.out.println (s.length); // on utilise ici l'attribut length des tableaux.
  3. String [] s = new String [10];
    System.out.println (s.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 le nombre de chaînes pouvant tenir dans ce tableau.
2
vidyasagar

Ce n'est pas vraiment la réponse à votre question, mais si vous voulez avoir quelque chose comme un tableau qui peut s'agrandir et se réduire, vous ne devriez pas utiliser un tableau en Java. Vous avez probablement intérêt à utiliser ArrayList ou une autre implémentation de List.

Vous pouvez ensuite appeler size () pour obtenir sa taille.

1
Simon Groenewolt