Главная » Uncategorized » Java static

Java static

1. Когда некоторые данные должны храниться в «единственном числе» независимо от того, сколько было создано объектов класса.

2. Когда потребуется метод, не привязанный ни к какому конкретному объекту класса
(который можно вызвать при полном отсутствии объектов класса)

Обычные нестатичные методы должны точно знать объект, с которым работают.
Обычный объект надо СОЗДАТЬ и ИСПОЛЬЗОВАТЬ для вызова метода или доступа к информации.

+Термины: Данные уровня класса И методы уровня класса.
Тут подразумевается, что данные и методы существуют только на уровне класса в целом, а не отдельных объектов этого класса.

даже в этом случае(как в коде):

class StaticTest {
    static int i = 666 669;
}

StaticTest st1 = new StaticTest();
StaticTest st2 = new StaticTest();

Для элемента  StaticTest.i выделяется единственный блок памяти. Оба объекта совместно используют одно значение i. Так и  st1.i, и st2.i
равны 666669. Так же к ним можно обратиться прямо по имени класса(Для нестатических нет такой возможности):

StaticTest i++

типерь st1.i и st2.i будут равны 666 670.

Синтаксис с именем класса — предпочтителен, 1) Подчёркивается статичность элемента 2) Больше возможностей для оптимизации компилятору.

То же для статических методов(имяКласса.метод()):

class Incrementable {
     static void increment ) {
        StaticTest i++;
     }
}

Можно вызвать так:
    Incrementable sf = new Incrementale().
    sf increment();
    
Но по известным причинам можно и так, с прямым указанием класса:

    Incrementable.increment();
    

Итак: с static способ определения данных меняется радикально.

Статические данные существуют на уровне  класса, не статические — на уровне объектов и в отношении изменеия не столь принципиальны.

Важно: определение методов, которые могу вызываться без объектов. В частности в методе main(), как в точке входа в приложение.

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s