Разница между length и length() в Java

В современных IDE есть функция автозаполнения, которая предлагает ключевые слова или переменные Java, объявленные в нашем классе, и без этой функции, как  Знайте  Размер стол? А как узнать размер стрингов? Разработчики всех уровней (новички и эксперты) не могут отличить длина  и  length()  правильно, а так как IDE исправляет эту проблему, она все равно остается непонятной. В этой статье мы рассмотрим некоторые понятия о массивах, строках в Java.

Самый простой ответ заключается в том, что  длина  используется для получения размера массива, и  length()  - метод, возвращающий размер строки.

int[] array = new int[5]; 
System.out.println(array.length);//длина массивов

String str = "строка";
System.out.println(str.length()); length() для string
Вопрос в том, почему массив имеет атрибут  длина  но не string и vice-vers-that?

Почему массивы в Java имеют свойство lening?

Массив — это контейнер объектов определенного типа, в котором хранится ограниченное количество элементов. После того, как доска создана, ее размер никогда не изменится и останется фиксированным. Вот почему длина  объявляется как переменная final  И это почему  длина  считается атрибутом, определяющим массив при его создании.

Массив может быть создан двумя методами:
  1. Инициализируем новый массив значениями.
  2. Создаем экземпляр нового массива, указав его размер.
Инициализация массива значениями создает новый массив с размером, соответствующим количеству элементов, разделенных запятыми.

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

Второй способ заключается в создании экземпляра нового массива, указав тип, количество элементов:

String[] tab = new String[3]; 

Почему нет класса Array, определенного как String?

Массив является объектом, и у каждого массива есть класс  Объект  Допустимо следующее утверждение:

Object obj = new String[20]; 
Массив охватывает все методы и атрибуты, унаследованные от класса. Объект  (кроме clone). Почему нет определения класса Array? Мы не можем найти определение класса Array, одно из объяснений заключается в том, что он скрыт от нас. Если немного подумать, если есть класс Array, как он выглядит? Ей все равно понадобится доска для хранения предметов, верно? Поэтому определять такой класс — плохая идея. На самом деле, вы можете получить класс массива, вызвав метод getClass():

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

class [I

Почему String имеет length()?

Структура данных a  строка  представляет собой таблицу  Char. Нет необходимости определять атрибут, который не нужен для каждого приложения. В отличие от языка C, массив символов в Java не является строкой. строка  является динамичным по своей природе, но длина. Дизайнеры java подумали об этом и решили упростить задачу и избежать ошибок для разработчиков, создав метод. length().

References:
Javadoc: Arrays
StackOverFlow: Почему нет класса java.lang.Array?