10
votes

Quelle est la différence entre la longueur et la longueur ()?

J'ai remarqué que lors de la longueur d'un tableau, vous écrivez quelque chose comme: xxx

Cependant, pour des listes de matrices ou une chaîne, vous écrivez un support à la fin. , tels que ceux suivants pour la longueur de la chaîne: xxx

Quelle est la raison clé de cela et comment savez-vous quand mettre les supports ou maintenant?


0 commentaires

8 Réponses :


10
votes
.length();

0 commentaires

0
votes

.length () est une méthode de classe de cordes et qui renvoie le nombre de caractères de la chaîne.

.length donnera le nombre d'éléments stockés dans un tableau. P>

public class length
{
public static void main(String args[])
{
String x="test";
int a[]={1,2,3,4};
System.out.println(x.length());
System.out.println(a.length);
}
}

// output
4
4


0 commentaires

2
votes

Le seul moyen de savoir quand utiliser lequel est l'expérience. Bien qu'un IDE avec autocalistion vous aide généralement quand vous ne vous en souvenez pas.

Pour la plupart (pas toujours) Array.Length, System.Er, et System.err sont les plus courants 3 que vous exécuterez en réalité un accès membre au lieu d'appels de méthode.


0 commentaires

0
votes

array.length est une propriété de ce tableau , similaire à une référence variable.

arraylist.Size () est une méthode réelle appel à l'objet de la liste des arrestations.


0 commentaires

4
votes

Les matrices sont traités différemment de strings ou arraylistes ou quoi que ce soit d'autre qui puisse être compté en Java. Un tableau est à peu près un type natif et la longueur ne peut jamais être modifiée après son initialisation. Il n'y a donc pas besoin d'encapsulation. La variable de longueur peut être directement exposée sans effets secondaires.

La raison pour laquelle chaîne utilise une méthode au lieu d'une variable est qu'il utilise en interne un char [] qu'il ne veut pas exposer publiquement (pour l'immuabilité / Encapsulation), de sorte qu'il enveloppe la variable de longueur dans une longueur () méthode. C'est la même raison ArrayList a une méthode taille () au lieu d'une longueur variable

La seule fois, vous utiliserez la variable au lieu de la méthode est avec des tableaux. Tout le reste sera des méthodes. C'est-à-dire que vous utiliserez les supports pour tout sauf les tableaux.


0 commentaires

0
votes
int[] myArray = new int[10];
String myString = "hello world!";
List<int> myList = new ArrayList<int>();

myArray.length    //gives the length of the array
myString.length() //gives the length of the string
myList.size()     //gives the length of the list
Its very likely that strings and arrays were designed at different times and hence ended up using different conventions. One justification is that since Strings use arrays internally a method length() was used to avoid duplication of the same information. Ultimately this is just an inconsistently that evolved that would definitely be fixed if the language were ever redesigned from the ground up. :D

1 commentaires

Non, ce n'est pas qu'ils ont été conçus à des moments différents. Tout ce qui a une taille



0
votes

La principale différence est que, dans l'A), son type de matrice, par exemple int [] , objet [] , double [] , ect .. qui a un domaine public appelé Lenght et le b) second cas est une chaîne d'objet qui a une fonction appelée longueur () , la fonction a pu être appelée getLength () ou quelque chose d'autre. La longueur de champ public de type tableau est probablement une gueule de bois de la manière de faire des choses de C ++.

Les types de tableau ont les suivants:

  • la longueur du champ final public, qui contient le nombre de Les composants de la matrice (la longueur peuvent être positifs ou zéro)
  • la méthode publique clone, qui remplace la méthode du même nom Objet de classe et jette aucune exception vérifiée
  • Tous les membres hérités de l'objet de classe; la seule méthode de L'objet qui n'est pas hérité est sa méthode clone

    Jetez un coup d'œil à This, Types de réseau .


0 commentaires

0
votes

longueur est une référence de membre pseudo-données et fonctionne uniquement pour les tableaux (small-a) (ignorant les classes que vous pourriez définir qui implémenter le membre).

Tout le reste est un objet d'une classe et toutes les classes JDK qui ont ce concept définissent soit longueur () ou taille () méthodes d'instance. (Je souhaite qu'ils avaient été cohérents et choisis l'un ou l'autre, mais c'est de l'eau sur le pont.)


0 commentaires