J'ai remarqué que lors de la longueur d'un tableau, vous écrivez quelque chose comme: 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: p> Quelle est la raison clé de cela et comment savez-vous quand mettre les supports ou maintenant? P > p>
8 Réponses :
.length();
.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
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. P>
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. P>
array.length code> est une propriété de ce tableau code> code>, similaire à une référence variable. p>
arraylist.Size () code> est une méthode réelle appel à l'objet de la liste des arrestations. p>
La raison pour laquelle 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. P> Les matrices code> sont traités différemment de strings code> ou arraylistes code> ou quoi que ce soit d'autre qui puisse être compté en Java. Un tableau code> code> 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. P>
chaîne code> utilise une méthode au lieu d'une variable est qu'il utilise en interne un char [] code> qu'il ne veut pas exposer publiquement (pour l'immuabilité / Encapsulation), de sorte qu'il enveloppe la variable de longueur dans une longueur () code> méthode. C'est la même raison code> ArrayList code> a une méthode code> taille () code> au lieu d'une longueur code> variable p>
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
Non, ce n'est pas qu'ils ont été conçus à des moments différents. Tout ce qui a une taille code>
La principale différence est que, dans l'A), son type de matrice, par exemple Les types de tableau ont les suivants: p>
Jetez un coup d'œil à This, Types de réseau a>. p> int [] code>, objet [] code>, double [] code >, 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 () code>, la fonction a pu être appelée getLength () code> 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 ++. p>
Tout le reste est un objet d'une classe et toutes les classes JDK qui ont ce concept définissent soit longueur code> 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). P>
longueur () code> ou taille () code> 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.) P>