![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Gunslinger |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: нет Всего: 3 |
В классе есть static-поле и обычный метод, в котором используется это поле.
1.Чтобы его использовать необходимо вызывать статик-конструктор? 2. Статик-конструктор автоматически не вызывается? 3. Статик-поля это типа глобальных переменных? 4. В яве статик-конструкторы так же без модификаторов доступа и параметров? |
|||
|
||||
| jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 40 Всего: 75 |
Нету в языке Java никаких static-конструкторов, возможно вы имели ввиду static-блоки, выполняющиеся при загрузке класса? Такие блоки не наследуются, не содержат параметров и модификаторов доступа и прямое обращение к ним невозможно. Вызов можно осуществлять косвенно, форсируя загрузку класса. Для операций со статическими переменными наличие static-блока в классе необязательно.
Statiс-переменные - это переменные класса, а не объекта. Можете считать их глобальными в пределах всех экземпляров класса, так как они существуют в единственном экземпляре. Будут ли они глобальными в каком-либо другом контексте, зависит от модификаторов доступа этих переменных. -------------------- Opinions are like assholes — everybody has one |
|||
|
||||
| Gunslinger |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: нет Всего: 3 |
jk1, до этого с шарп изучал -- сейчас нужно в ява быстро втянуться. Поэтому отталкиваюсь от с шарп (Эккеля только начал читать). Отсюда и статик-конструктор. Раз в яве таких нет, то что же инициализирует статик-поля? Особенно, если они private static?
|
|||
|
||||
| jk1 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 40 Всего: 75 |
Во-первых, static-поля можно инициализировать в объявлении, чаще всего так и поступают
Во-вторых, можно использовать уже упоминавшийся static-блок, который будет выполнен при загрузке класса. Таких блоков может быть любое количество, порядок выполнения будет соответствовать порядку описания:
Ну и наконец никто не мешает присваивать значения этим переменным в любом месте кода, откуда позволяют модификаторы доступа. -------------------- Opinions are like assholes — everybody has one |
||||
|
|||||
| Gunslinger |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: нет Всего: 3 |
Значит можно и в самом методе экземпляра, который использует это поле? В с шарп если есть статик-поля, которые используют методы экземпляра, то предварительно нужно вызвать статик-конструктор. |
|||
|
||||
| MaxPayneC |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 18.2.2006 Репутация: 5 Всего: 9 |
Статические поля и методы класса можно использовать в инстанс-методах этого класса (и других, если модификаторы доступа позволяют).
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |