Java

Объясните, пожалуйста, что такое static?

Только если можно, понятным языком, а то в нете читал, но че-то как распишут на 5 стр и ничерта не ясно, можно вызывать то, то нельзя и тд. Зачем нужен статик, в чем его преимущество, в чем не достаток и че это такое? Заранее спасибо!
DV
Denis Vackulenko
426
типа глобального значения
Не надо создавать каждый раз экземпляр класса, сразу к нему можно обращаться
Дмитрий Цуканов
Дмитрий Цуканов
60 379
Лучший ответ
Denis Vackulenko А если не писать статик, то нужно создавать экземпляр?
То есть получается статик - это как метода, а без статик как объект над которым происходит действие?
public class Человек {
double рост;
double вес;
Color цветГлаз;
static long численность;
}

Вот есть класс «Человек». А на Земле живет семь миллиардов людей — экземпляров класса «Человек».

У каждого человека (объекта) есть свой набор свойств: цвет глаз, овал лица, рост, вес, структура ДНК… Взять двоих разных людей — у них эти свойства не совпадают.

Так вот, рост, вес и цвет глаз — это простые свойства, поля отдельных объектов. Они объявлены в описании класса «Человек», но у каждого человека они свои. 7 миллиардов человек — 7 миллиардов полей.

А статическое поле — это не поле объекта, а поле всего класса целиком. Например, численность человеческого населения. Его значение одинаковое для всех людей. Если оно изменится, то изменится сразу для всех людей. Потому что статическое поле — одно на весь класс.

System.out.println(вася. рост);
System.out.println(маша. рост);
System.out.println(вася. вес);
System.out.println(маша. вес);
System.out.println(Человек. численность);
СИ
Симчук Игорь
64 406
Denis Vackulenko И понял и не понял одновременно (Человек Шредингера). Раньше писал программы для себя на Delphi, там по моему такого нет. По этому не совсем понимаю зачем это надо. Мы же можем 1 программу написать внутри public static void main (String[] arts) {} и не создавать ничего другого. Я в том плане, что не совсем понимаю для чего создавать объекты или статические методы.
static говорит о том, что такие свойства или методы принадлежат классу, а иначе они принадлежат объекту.
Акмал Расулов
Акмал Расулов
38 877
Что тут расписывать-то? Просто, ежели у объекта есть свойство "static" - для него не нужно создавать экземпляр.
Думаю так понятней:
Есть класс object, у него есть свойство, например static int count(количество) = 0
object X = new object();
А в конструкторе object есть такой кусочек кода:
object.count++
Потом, обратившись к object.count(или X.count), можно узнать количество экземпляров класса object.
Даже если ты ни разу не вызывал конструктор object - его count будет доступен. \
Весь смысл в том, что - всё что со static - в единичном экземпляре.
Ansar !!!
Ansar !!!
23 106
Статик - объявляет, что свойство принадлежит именно классу, а не объекту. Получить и присвоить значение статическому члену можно только используя класс, а не объекты этого класса.
АБ
Анар Бадалов
17 238
Статик это когда переменная только одна, независимо от того сколько объектов (классов) было создано с ней.

Это как облако, и жесткий диск устройства.

Допусти у тебя есть 10 айфонов, и 1 Айклауд, то есть ты можешь хранить разную информацию в жестких дисках, а информация в айклауде будет всегда одинаковая на любом из айфонов.
Марсель Суров
Марсель Суров
2 368
это тип АА в кс го правдо по ним ни кто не мисает но они есть и еще скит пмнешь)
Maksim Shatin
Maksim Shatin
329