Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
1 / 1 / 2
Регистрация: 11.02.2014
Сообщений: 97
1

Инициализация обычных статических переменных

20.09.2015, 22:58. Показов 599. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер. Читаю небезызвестную философию джава. В одной из глав есть пример о порядке иницыализации статических и обычных полей. Код примера:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class Bowl {
    Bowl(int marker){
        System.out.println("Bowl("+marker+")");
    }
}
 
class Table{
    static Bowl bowl1=new Bowl(1);
    Table(){
        System.out.println("Table()");
    }
    static Bowl bowl2 = new Bowl(2);
}
 
class Cupboard{
    Bowl bowl3=new Bowl(3);
    static Bowl bowl4=new Bowl(4);
    Cupboard(){
        System.out.println("Cupboard()");
    }
    static Bowl bowl5=new Bowl(5);
}
 
public class Testik {
static Table table=new Table();
static Cupboard cupboard=new Cupboard();
    public static void main(String[] args)  {
        System.out.println("Просто строка 1");
        new Cupboard();
        System.out.println("Просто строка 2");
        new Cupboard();
 
    }
}
Вывод:

Bowl(1)
Bowl(2)
Table()
Bowl(4)
Bowl(5)
Bowl(3)
Cupboard()
Просто строка 1
Bowl(3)
Cupboard()
Просто строка 2
Bowl(3)
Cupboard()

Вопрос такой: Почему строки new Cupboard(); в методе мэйн иницыализируют только нестатический Bowl3 и конструктор, а статические Bowl4 и Bowl5 игнорируют?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.09.2015, 22:58
Ответы с готовыми решениями:

Инициализация переменных
Я новичок в Java, хочу проверить что поля в Java инициализируются по умолчанию. Проверьте...

Инициализация static переменных
Есть код class UseStatic { static int a = 3; static int b; static void...

Инициализация переменных в операторе Switch
Почему компилятор ругается на дубликат локальной переменной, ведь придерживается ветвление? int...

ООП(зачем нужна инициализация переменных в конструкторе Box)
package pkg1; public class Main { public static void main(String args) { BoxWeight...

2
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
20.09.2015, 23:11 2
Цитата Сообщение от Козак Алексей Посмотреть сообщение
Читаю небезызвестную философию джава
Там же вроде всё это написано.

Ответ такой: потому что они статические. Статические - по определнию, существуют в единственном экземпляре. Зачем их еще раз инициализировать?
1
1 / 1 / 2
Регистрация: 11.02.2014
Сообщений: 97
20.09.2015, 23:18  [ТС] 3
Блин, точно. Вот я дурак...))Спасибо!
0
20.09.2015, 23:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.09.2015, 23:18
Помогаю со студенческими работами здесь

Отличие обычных классов от статических
Чем отличаются обычных классы от статических, а именно относительно расположения в памяти: я так...

Инициализация статических полей
Ковыряю legacy код, возможно нубский вопрос:( Есть глобальный класс со статическими полями и...

Инициализация статических членов класса
Непонятно, почему статические члены класса нельзя инициализировать при помощи вот такого...

Инициализация статических членов класса
Как в php присвоить значение статической переменной класса, которая должна быть объектом другого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru