ПредишенСледващото

статични членове принадлежат към класа, а не конкретен случай.

Това означава, че има само едно копие от статично поле [1], дори и да се създаде един милион копия от един клас или не сте създали. Тя ще бъде използвана от всички инстанции.

Тъй като статичните методи не са свързани с конкретна Например, те не могат да се отнасят до членове инстанция (както знаете, това, което клас например Здравейте искате да приложите?). статични членове могат да се отнасят само до статичните елементи. членове съд може, разбира се, достъп до статичните членове.

Забележка: Разбира се, статични членове имат достъп до член например чрез позоваване на обект.

[1] В зависимост от характеристиките на времето за изпълнение, може да е за една или ClassLoader AppDomain или конци, но това не се отнася за точка.

Затова, ако искате да се "нова на здравей" навсякъде в кода: A- в първия сценарий (да се промени, без използването на "статичен"), тя ще създаде нов часовник всеки път, когато се нарича "нов на здравей", но B- във втория сценарий (след промените с помощта на "статичен"), всеки екземпляр на "нов на здравей" ще продължи да споделят началния и съща референтна "часовника", която е създадена за първи път.

Ако не се нуждаете от "часовника" някъде извън мейнстрийма, че ще работи също толкова добре:

статичен дума означава нещо (поле, метод или вложените клас), свързани с вида, не с всеки конкретен случай на тип. Например, един е Math.sin (.) Без инстанция на класа Math. и наистина не можеш конкретни примери класа Math.

Java, за съжаление, ви дава достъп до статичните членове, сякаш те са членове на инстанция, например,

Той прави да изглежда така, сякаш сън - това е метод на инстанция, но в действителност това е статичен метод - това винаги предизвиква текущата нишка да спи. Това става най-добре в кода за разговори:

статично ключова дума в Java означава, че променлива или се поделя между всички случаи на този вид клас. а не на самите обекти.

Така че, ако имате променлива: частен статичен Int I = 0; И ти го увеличи (I ++) в един-единствен екземпляр, промяната ще бъде отразена във всички копия. Сега аз съм един във всички случаи.

Статични методи могат да бъдат използвани без да се създава копие на обекта.

Това означава, че не е нужно да има клас например да използват метода. Ето защо, в твоя пример, можете да се обадите:

От в статична метод (който принадлежи само на класа), не можете да получите достъп до тези членове, които не са статични, тъй като техните стойности зависят от вашия случай. По този начин, часовник, който е член на място ще има различна стойност / справка за всяко копие от вашата класа на Здравейте, и затова не може да я ползвате от статична част на класа.

досега Тази дискусия е пренебрегнала опасения клас товарач. Строго погледнато, Java статично поле поделя между всички инстанции на класа за този клас товарач.

Основното приложение на статични елементи.

Ето как можете да имате ценностите, споделяни от всички членове на класа, без да изпрати Здравейте клас инстанция в друг клас. И без статични че не е нужно да се създаде инстанция.

Можете просто да се обадя статичните стойности или методите на името на класа:

Статичен - този модификатор без достъп. Статичното ключова дума в класа от инстанция на класа. Тя може да се използва за свързване на променлива или метод в класа.

Статичното ключова дума може да се използва с CAN:

Клас инвестира в друг клас

Не може да се използва с:

Клас (не влагане)

Метод местни вътрешни класове (разлика, тогава вложени клас)

Методи за вътрешен клас

Представете си следния пример, който е променлива на инстанцията на име преброяване, което увеличава в конструктора:

Като променлива на инстанцията получава паметта по време на създаването на обекти, всеки обект ще имате копие на променлива на инстанцията, ако се увеличи, това няма да се отрази на други обекти.

Сега, ако ние променяме чрез променлива на инстанцията на статична, а след това програмата ще доведе до различно заключение:

В този случай, статичната променлива ще получи памет само веднъж, когато един обект се променя стойността на статична променлива, тя ще запази стойността си.

Статично с финала:

Една глобална променлива декларирана като окончателно и статичен, остава непроменен за целия производителността. Защото статични членове, се съхраняват в този клас, и те са заредени само веднъж в цялото изпълнение. Те са общи за всички обекти на класа. Ако декларирате статично окончателно променлива, всеки обект не може да променя стойността си, тъй като тя е окончателно. Ето защо, променливите, които са декларирани като окончателно и статичен, понякога наричани константи. Всички полета интерфейси се наричат ​​константи, защото те са статични и окончателно по подразбиране.

Полето може да се определя на всеки клас или клас например. По подразбиране полета са например променливи. С помощта на статично поле, тя е променлива клас, така че има един и само един часовник. Ако направите промени на едно място, може да се види навсякъде. Съд променливи варират независимо.

В Java статичното ключова дума може просто да се счита, както следва:

"Независимо от отношенията, или всеки конкретен случай"

Ако мислите, че за статично, така става по-лесно да се разбере, използването му в различни контексти, в които това се случи:

статично поле - поле, което принадлежи към класа, отколкото който и да е конкретен случай

Статичните методи не се използват никакви инстанция променливи на класа, в който са определени. Много добро обяснение на разликата може да се намери на тази страница

Аз съм разработил обич за статични методи (само ако е възможно) в класовете на "помощник".

Повикване на класа не е нужно да се създаде друг член променлива (например) на клас-половинка. Можете просто да се обадя на метода на класа на помощник. Като клас помощник подобрена, защото вие не се нуждаете от дизайнер, и не е нужно променливите страни (статии).

Вероятно има и други предимства.

Статичното дума се използва за идентифициране на поле или метод, принадлежащ към класа, а не например. С помощта на код, ако обектът Clock е статично, всички случаи на класа Здравейте ще споделят тези показател за данни Clock (област). Ако направите това nonstatic всеки отделен случай може да има уникален Здравейте «Clock кутия.

Проблемът е, че сте добавили основен метод в класа Здравейте, така че да може да работи с кода. Проблемът тук е, че основният метод за статично и като такъв не може да се отнася до не-статично поле или метод него. Можете да се реши този по два начина:

  1. Създаване на всички полета и методи статичен клас Здравейте, така че те могат да се отнасят в основен метод. Това е много лошо (или погрешно причина да го направи и / или статичен метод)
  2. Създаване на инстанция Здравейте клас вътре основен метод, за да получите достъп до всички свои полета и методи, които те са предназначени, на първо място.

За вас това означава промяна на код:

Статично член прави часа на класа, а не страните инстанция. Без статичното ключовата дума, която ще трябва да се създаде инстанция на клас Здравейте на (което има променлив елемент за синхронизация) - например

Можете също така да мисля за статични членове, които нямат "това" показалка. Те са разпределени между всички инстанции.

За пореден път, не забравяйте, че има едно копие на статичен клас ClassLoader.

Главна тук е статичен метод, а има и две големи ограничения на статичен метод:

  1. Статична метод не може да се използва не е член на статични данни или директен достъп до извънболнична метод.

Този супер не може да се използва в статична контекст.

Изход: грешка при компилация

За да добавите към съществуващите отговори, нека да се опитаме с образа на:

Разбиране на концепциите за статично

Статичните променливи могат да имат достъп до тях само в статични методи, така че когато ние заявяваме статична променлива, Газопоглъщащите и сетер методи са статични методи

Статичните методи - това е нивото на класа, към който можем да имаме достъп чрез използване на името на класа

По-долу е пример за статични променливи: абсорбиращи смеси и сетери:

ключова дума статично модификатор, когато се използва във връзка с променлива се създаде променлива, която ще съществува, независимо от всички случаи на обекти, създадени с помощта на този клас. Статичните променливи се инициализират само веднъж, в началото на прилагането, понякога наричан стартирането на приложението. Променливи, които използват ключови думи статично модификатора, ще се инициализират на първо място, преди да се инициализира всеки един случай, променливи. Само един екземпляр от статична променлива ще съществува в паметта на системата, независимо от броя на копията на един клас, който съдържа тази променлива. По този начин, статичен Java код означава, че променливата принадлежи към класа, отколкото в случаите на обекти, създадени от този клас.

модификатор дума статично работи по същия начин за методи, декларирани като статично, така че статичното модификатор се използва за създаване на методи, които трябва да съществуват независимо от всички случаи на обекти, създадени с помощта на класа. Това отново улавя метод на място, така че това е единственото копие на този метод, който ще се използва от вашия клас и обекти от този клас.

Статичните методи не могат да използват всеки един случай, променливи от всички случаи на обекти, създадени с помощта на класа, в който са определени, толкова дълго, колкото ще бъде създаден нито един от тези случаи на обекти. Статичните методи следва да предприемат всички техни стойности на данни от списъка на входни параметри, а след това да разбера това, което някои от тези параметри, без позоваване на променливи, които по своята същност са не са статични, тъй като те са с променлива!

За статичен метод, има две основни ограничения. Те са следните:

1. Статична метод не може да се използва не е член на статични данни или директен достъп до извънболнична метод.

2.It е супер и не могат да бъдат използвани в статичен контекст.

Първата причина се дължи на вашата грешка компилация

Подкрепете проекта - споделете линка, благодаря!