Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нестатический метод использует статик-поле, пара вопросов 
V
    Опции темы
Gunslinger
Дата 28.4.2010, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 30.12.2006
Где: Астрахань

Репутация: нет
Всего: 3



В классе есть static-поле и обычный метод, в котором используется это поле. 
1.Чтобы его использовать необходимо вызывать статик-конструктор? 
2. Статик-конструктор автоматически не вызывается?smile
3. Статик-поля это типа глобальных переменных?
4. В яве статик-конструкторы так же без модификаторов доступа и параметров?
PM MAIL   Вверх
jk1
Дата 28.4.2010, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Нету в языке Java никаких static-конструкторов, возможно вы имели ввиду static-блоки, выполняющиеся при загрузке класса? Такие блоки не наследуются, не содержат параметров и модификаторов доступа и прямое обращение к ним невозможно. Вызов можно осуществлять косвенно, форсируя загрузку класса. Для операций со статическими переменными наличие static-блока в классе необязательно.
Statiс-переменные - это переменные класса, а не объекта. Можете считать их глобальными в пределах всех экземпляров класса, так как они существуют в единственном экземпляре. Будут ли они глобальными в каком-либо другом контексте, зависит от модификаторов доступа этих переменных. 


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
Gunslinger
Дата 29.4.2010, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 30.12.2006
Где: Астрахань

Репутация: нет
Всего: 3



jk1, до этого с шарп изучал -- сейчас нужно в ява быстро втянуться. Поэтому отталкиваюсь от с шарп (Эккеля только начал читать). Отсюда и статик-конструктор. Раз в яве таких нет, то что же инициализирует статик-поля? Особенно, если они private static?
PM MAIL   Вверх
jk1
Дата 29.4.2010, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Во-первых, static-поля можно инициализировать в объявлении, чаще всего так и поступают
Код

private static String sample = "Sample";
 
Во-вторых, можно использовать уже упоминавшийся static-блок, который будет выполнен при загрузке класса. Таких блоков может быть любое количество, порядок выполнения будет соответствовать порядку описания:
Код

private static String sample;
private static String oneMoreSample;

static{
     sample = "Sample";
}

static{
     oneMoreSample = sample;
}

Ну и наконец никто не мешает присваивать значения этим переменным в любом месте кода, откуда позволяют модификаторы доступа.


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
Gunslinger
Дата 29.4.2010, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 30.12.2006
Где: Астрахань

Репутация: нет
Всего: 3



Цитата(jk1 @  29.4.2010,  10:17 Найти цитируемый пост)
Ну и наконец никто не мешает присваивать значения этим переменным в любом месте кода, откуда позволяют модификаторы доступа. 

Значит можно и в самом методе экземпляра, который использует это поле? В с шарп если есть статик-поля, которые используют методы экземпляра, то предварительно нужно вызвать статик-конструктор.
PM MAIL   Вверх
MaxPayneC
Дата 29.4.2010, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 18.2.2006

Репутация: 5
Всего: 9



Статические поля и методы класса можно использовать в инстанс-методах этого класса (и других, если модификаторы доступа позволяют).
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0488 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.