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

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

Но в замяна има по-гъвкав модификатор окончателен:

В този пример, крайният променлива наречена PI и тя веднага започна да 3.14 е обявена. Окончателните стойности на променливите могат да се задават само веднъж и повече не могат да бъдат променяни. Всеки опит за промяна на окончателната стойност на променливата (или областта) компилатор ще възприеме като грешка, че всичко, както и константи.

Разликата между крайните променливите и константите е, че подготовката за работа може да се отлага:

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

Така че, константите се наричат ​​публични, статични, окончателни и веднага инициализират области:

Статично поле (статично модификатор) принадлежи към класа и достъп до нея не е необходимо да се създаде специална инстанция на обекта:

Имайте предвид, че в Java, тъй като във всички тези езици C, направени постоянни имена, за да пишат BOLSHIMI_BUKVAMI_RAZDELYAYA_IH_PODCHORKIVANIEM.

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

В този случай, всичко се оценява по време на компилация и няма нужда да се замени 60 * 60 * 24 до по-малко чете и очевидно вече изчислява вашата 86400 (освен може би не е изчислено правилно).

Групирането на константи чрез обява

Много често константи се използват в няколко класа и искат да бъдат всички в една единица. В Java обектно-ориентиран принуден, следователно, все едно ще трябва да декларират клас без методи и константи всички пуснати в него. Например константи клас модификатори за елементи на езика Java:

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

  • тип несигурността (тип безопасни): в метода, когато се изисква стойност предавателна изброяване може да се прехвърля произволен брой, а не само на стойностите от 1 до 11;
  • Uninformative: например, когато отстраняване на грешки на стойност 3 няма да ни каже нищо. И аз бих искал да видя ЧАСТНО;
  • Погрешимост: например, добавяне на нова позиция или промяна на съществуващия последователност. Например, не можете да изпълните, и от обществеността и защитени сложи равна на 1. Това означава, че няма контрол от компилатора като уникалността на стойностите на константите, както и за възможността за случайно присвояване на променливи стойности не отговаря на тези константи.

Тези константи се наричат ​​групирани бройки в Java за ENUM те имат специален дизайн.

Препишете класа като изброяване:

И вие можете да го използвате като нормален постоянно:

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

По принцип трябва да се отбележи, че по-рано, преди петата версия на Java изброяване не е, а вместо това трябва да използвате класове със статични константи. Казвам това с факта, че много от класовете, които ще срещнете са написани от "старомоден" начин. И стандарта на техните класове не са се променили, например java.awt.Color.

Технически преводи са пълен клас, който наследява от java.lang.Enum. т.е. Запис обществен ENUM Модификатор еквивалент абстрактен клас Модификатор простира java.lang.Enum.

И ако това е един клас, а след това на произволен брой полета и методи могат да се добавят към него:

В началото на този пример ще бъде отпечатана обществен изход вместо enum'a 1. Всяка съхранява име на поле с името си (в този случай PUBLIC). Ние предефинирани (@Override) ToString () метод, в който името на диск, за да малки букви.

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

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

Използване на статични внос

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

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

Така че някой хвърли идея: "Защо всеки път, за да напишете пълното име на интерфейса с константи, ако тя може да бъде zaimplementit и достъп до тях директно". И такива проекти

Тя се превърна в кошмар

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

или цялата работа:

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

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

Прехвърляне на всички статични методи на клас може да бъде частично вредни за четливост; ако имате нужда от само един или два метода, като ги внася отделно. Използва умело, статичен внос може да направи вашата програма по-видими, с изключение на програмен код nunzhnye повторение на имената на класовете.

Как да обяви Конст клас?

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

заключение

Както можете да видите, има различни нюанси на използването на константи в Java, които не винаги са очевидни за начинаещи. За съжаление, все още не са били осветени теми операции успях от константи, ние бихме искали да пиша повече за масивите от симулационни операции през допълнение + покаже как да се създаде постоянна колекция (която ще обсъдим в отделна статия).

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

Свързани статии

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