почему метод .length без скобок, то есть не так .length() ? в каких случаях нужны скобки?
Anonymous #2632922
35 уровень
почему метод .length без скобок, то есть не так .length() ?
Обсуждается
Комментарии (10)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia Volkova Java Developer в DXC Master
28 ноября 2021, 19:50
У массива length - это не метод, а поле (переменная).
А у строки - метод, и поэтому со скобками.
+1
Anonymous #2632922
29 ноября 2021, 12:13
Можете пояснить в каких случаях считается переменная а в каких методом?
0
Ksenia Volkova Java Developer в DXC Master
29 ноября 2021, 12:21
Если length в классе объявляется как метод, то это метод
String
Если как поле - значит поле
Array
Никаких "волшебных" правил тут нет.
Ты, к примеру, можешь создать свой класс и объявить в нем переменную length. Или метод. Или и то, и другое.
+1
Anonymous #2632922
29 ноября 2021, 13:12
Почему в нашем случае она считается переменной если она вычисляет длину?
0
Ksenia Volkova Java Developer в DXC Master
29 ноября 2021, 13:17
Она ничего не вычисляет, она хранит.
Размер массива задается при его создании и никогда не меняется. Поэтому вычислять там нечего.
(У строки в общем-то тоже вычислять нечего, размер тоже определяется при создании. Но там нет прямого доступа к соответсвующей переменной - только через метод).
+1
Anonymous #2632922
29 ноября 2021, 16:51
Не понимаю разницу.
Можете детально пояснить в каких случаях считается переменная а в каких методом?
0
Ksenia Volkova Java Developer в DXC Master
29 ноября 2021, 17:00
Не понимаешь разницу между полем и методом??
Вот тут мы объявляем поле length
и обращаться к нему будем как к полю, без скобок
А можем создать метод length()
тогда и обращаться будем как к методу, со скобками
+2
НикитаExpert
29 ноября 2021, 17:03
когда создаешь массив, то у этого объекта есть переменная которая хранит это значение.
например
int [] array = new int[10];
array.length;
в данном случае это переменная (поле) которая хранит длину массива, здесь она будет равна 10;
а допустим у любой переменной String length() это будет метод. потому мы используем метод length класса String для вычисления длины переменной.
в общем если разработчик сделал метод с названием то это метод и скобки нужны, если это переменная то скобки не нужны. И по большому счету нужно просто смотреть документацию класса и смотреть как там это сделано. Но пока что просто запомни у переменной String это метод, у массива - переменная.
0
Anonymous #2632922
29 ноября 2021, 20:33
опять не понял. под словом вычислять я имел в виду вызывать длину массива.
вы имеете ввиду, что если он вызывает длину массива то она переменная
а если длину строки - то метод??
0
Ksenia Volkova Java Developer в DXC Master
29 ноября 2021, 20:48
Когда ты пишешь свой класс, ты можешь решить, какие там будут методы и переменные.
Вот создатели класса String решили, что length() у них будет методом, который возвращает значение.
А те, кто придумывал, как будет устроен массив, решили, что у них будет переменная, хранящая размер - length.
Я не знаю, что тут может быть такого, что не поддается пониманию...
+3