Поле и/или переменная? Вот в чем вопрос. (Java)

168
22 июля 2018, 00:40

По ходу моего обучения языка java термин "поле" не дает мне покоя. Я ни в книгах, ни в сети не нашел понятного объяснения этого явления. Кто-то говорит, что "поле" - это "переменная", просто название другое (для примера: объект и экземпляр). В других источниках - это разные вещи.

Так вот, что такое "поле"? Дополнил примером. Он верный?

class MyClass{
int weigth = 50; //---поле
int height = 100; //---поле 
String str; //---поле
int myMethod(){
    int a; //---локальная переменная (НЕ поле)
    int b; //---локальная переменная (НЕ поле)
    str = "Это строка"; //---полю присваивается значение
    ...
}}
Answer 1

Понятие "поле" отнюдь не является чем-то новым в Java. Оно скорее переехало из других языков, существовавших задолго до Java. Так для меня "поле" всегда ассоциировалось с названием колонки в таблице. В Java объекты имеют определенный тип, который может быть классом, интерфейсом, или перечисляемым типом. Внутри этих объектов мы можем определять переменные, которые определяют состояние этих объектов. И наподобие с таблицами, которые имею названия полей для каждой записи, мы имеем названия переменных для каждого объекта класса.

Не исключено, что внутри класса вы можете создавать другие переменные, например локальные переменные, или переменные параметры, которые видны в пределах блока или метода и тем самым не могут повлиять на состояние объекта. Такие переменные не являются полями. Более подробно можно почитать здесь.

Понятие "поле" также имеет широкий спектр значений принятых в информатике и означает место, где находятся данные.

Answer 2

На английском языке 2 разных терминов:

  • field - для атрибута (переменной) в классе,
  • array - для агрегатной переменной (переменной с многими значениями, доступными через индекс).

Оба эти термины переводятся как поле.

И так ваш пример может быть верным или нет - но в его контексте можно его считать верным.

READ ALSO
JavaFx как добавить DirectoryChooser?

JavaFx как добавить DirectoryChooser?

Есть следующий класс:

207
Умножение чисел с помощью рекурсии

Умножение чисел с помощью рекурсии

Стараюсь понять как работает рекурсияВот пример как перемножить два числа с помощью цикла:

294
Проблема с заменой фрагмента

Проблема с заменой фрагмента

Имеется класс WorkoutDetailFragment который наследуется от FragmentПри попытке замены этого фрагмента выводится ошибка

175