Unterschied zwischen length und length() in Java

In modernen IDEs gibt es die Autovervollständigungsfunktion, die Java-Schlüsselwörter oder Variablen anbietet, die in unserer Klasse deklariert sind, und ohne diese Funktion, wie  Wissen  Die Größe eines Tisch? Und woher erkennt man die Größe eines Strings? Entwickler aller Niveaus (Anfänger oder Experten) können nicht unterscheiden zwischen length  und  length()  korrekt, und da die IDE dieses Problem korrigiert, bleibt es immer noch unverständlich. In diesem Artikel werden wir uns einige Konzepte zu Arrays und Strings in Java ansehen.

Die einfachste Antwort ist, dass  length  wird verwendet, um die Größe eines Arrays abzurufen, und  length()  ist eine Methode, die die Größe eines Strings zurückgibt.

int[] array = new int[5]; 
System.out.println(array.length);//length for arrays

String str = "string";
System.out.println(str.length()); length() für string
Die Frage ist, warum das Array ein Attribut  length  aber nicht string und umgekehrt?

Warum haben Arrays in Java die lening-Eigenschaft?

Ein Array ist ein Container mit Objekten eines bestimmten Typs, der eine begrenzte Anzahl von Elementen speichert. Sobald das Board erstellt ist, ändert sich seine Größe nie und bleibt fest. Deshalb ist die length  wird als Variable deklariert final  Und das ist der Grund  length  wird als Attribut betrachtet, das ein Array definiert, wenn es erstellt wird.

Ein Array kann mit zwei Methoden erstellt werden:
  1. Initialisieren Sie ein neues Array mit Werten.
  2. Instanziieren Sie ein neues Array durch Angabe seiner Größe.
Durch die Initialisierung eines Arrays mit Werten wird ein neues Array mit einer Größe erstellt, die der Anzahl der durch Kommas getrennten Elemente entspricht.

int[] tab = {1,2,3}; 

Die zweite Methode besteht darin, ein neues Array zu instanziieren, indem Sie den Typ, die Anzahl der Elemente angeben:

String[] tab = new String[3]; 

Warum gibt es keine Array-Klasse, die als String definiert ist?

Ein Array ist ein Objekt und jedes Array hat eine Klasse  Objekt  Die folgende Anweisung ist legal:

Object obj = new String[20]; 
Ein Array umfasst alle Methoden und Attribute, die von der Klasse geerbt wurden  Objekt  (außer Klonen). Warum gibt es keine Definition der Array-Klasse? Wir können die Definition der Array-Klasse nicht finden, eine Erklärung ist, dass sie vor uns verborgen ist. Wenn Sie ein wenig darüber nachdenken, wenn es eine Array-Klasse gibt, wie sah sie aus? Sie bräuchte immer noch ein Brett, um die Gegenstände zu verstauen, oder? Deshalb ist es eine schlechte Idee, eine solche Klasse zu definieren. Tatsächlich können Sie die Klasse eines Arrays abrufen, indem Sie die Methode   getClass():

int[] tab = new int[2]; 
System.out.println(tab.getClass());
Ausgabe:

class [I

Warum hat String die length()?

Die Datenstruktur von a  String  ist eine Tabelle von  Zeichen. Es ist nicht erforderlich, ein Attribut zu definieren, das nicht für jede Anwendung benötigt wird. Im Gegensatz zur Sprache C ist ein Zeichenarray in Java kein String. String  dynamischer Natur ist, aber die Länge. Die Designer von Java haben daran gedacht und beschlossen, es einfacher zu machen und Fehler für Entwickler zu vermeiden, indem sie die Methode erstellen. length().

References:
Javadoc: Arrays
StackOverFlow: Warum gibt es keine java.lang.Array-Klasse?