Что такое "ClassName objectName;"делает до основного метода? - PullRequest
0 голосов
/ 28 января 2010

В этот код Я вижу следующие строки перед "основным" методом:

JTextArea displayArea;
JTextField typingArea;

Интересно, что делают эти строки и когда они выполняются. Насколько я знаю, «основным» методом является «точка входа». Итак, код будет выполняться с начала «основного» метода. Все остальные методы будут выполняться, если они вызываются из основного метода. Если это так, упомянутые 2 строки никогда не будут выполнены. Более того, даже если они будут казнены, что именно они делают? Что делают эти пары "ClassName objectName"?

Ответы [ 6 ]

2 голосов
/ 28 января 2010

Это так называемые "декларации". Они объявляют о существовании двух переменных, указывая их типы и их имена . Расположение объявления определяет их scope , другими словами, какие части программы могут знать об этих конкретных переменных и могут ссылаться на них.

Вот учебник по переменным Java .

0 голосов
/ 28 января 2010

Это ученики.

По сути, в классе Java у вас есть методы и члены. Члены являются переменными, которые содержат состояние объектов, которые являются экземплярами этого класса.

Основной метод является отдельным, это статический метод, поэтому он может выполняться без экземпляра класса. Итак, у вас есть логика, которая работает в main (), и у вас есть логика, которая работает на экземпляре класса. Они совершенно разные.

Если вы тоже хотите, в вашей функции main () вы можете создать экземпляр класса, и тогда он может «запуститься», если произойдет какая-либо инициализация функций-членов, которые необходимо выполнить.

Однако не все члены класса инициализируются в конструкторе, и они останутся нулевыми (поэтому в этом случае ничто не будет «выполнено» в этой точке). В вашем примере инициализация отсутствует, поэтому эти члены будут нулевыми при запуске логики конструктора.

0 голосов
/ 28 января 2010

Эти объявления оцениваются, когда объект создается на виртуальной машине Java. Это как раз перед тем, как метод main будет в этом случае.

0 голосов
/ 28 января 2010

Это переменные-члены (ссылки) класса KeyEventDemo.

Когда создается экземпляр KeyEventDemo с использованием ключевого слова new, каждый экземпляр будет иметь эти переменные для ссылки на JTextArea и JTextField соответственно. Они инициализируются в null и присваиваются как ссылки на пару экземпляров в методе addComponentsToPane.

0 голосов
/ 28 января 2010

указывает типы.

JTextArea displayArea; // this creates textarea type and thus textbox
JTextField typingArea; // thus creates textfield type var and thus text field
0 голосов
/ 28 января 2010

Вы не включили весь файл.

Это объявления полей. Это указывает на то, что при создании экземпляра класса (т. Е. Из него создается объект) каждый объект будет иметь ссылку на текстовую область и текстовое поле. Вам, однако, придется создавать эти объекты.

Обратите внимание, что ваш основной метод статичен. Это означает, что он может работать без создания экземпляра содержащего класса. Однако большинство методов Java работают с объектами. Предположим, что ваш main находится в классе C. Вероятно, что где-то в вашем main вы увидите «новый C», что означает, что создан экземпляр C. Затем на этом новом объекте будет вызвана какая-то другая операция (ищите другие нестатические методы в файле), и эти операции будут манипулировать этими двумя полями.

...