В математике и естественных науках константа - это термин, обозначающий определенное значение, например «π», которое является практическим названием числа 3.14159. У Java есть своего рода константы. Это переменные, которые согласно (а) не принадлежат ни одному объекту, а подпункт (б) не изменяют свое значение после их установки. Статическое слово в объявлении переменной показывает, что переменная не принадлежит ни одному объекту. Есть похожее ключевое слово, которое говорит, что значение переменной будет установлено только один раз и не изменится. Это ключевое слово final. Это ключевое слово не ограничивается статическими переменными, но может использоваться с переменными экземпляра, локальными переменными и даже с переменными, которые являются методами параметров. Объявляя переменную как окончательную, вы показываете всем, что переменная в течение существования будет иметь то же значение. Что еще более важно, компилятор будет обнаруживать каждую попытку изменить значение так называемой переменной и сообщать об этом как об ошибке. Что касается терминологии Java, переменная, объявленная как static и final, называется константой..
Последний модификатор может использоваться в нескольких местах на языке программирования Java. Здесь мы рассмотрим его наиболее распространенное использование. Последний модификатор может быть применен к объявлению локальной переменной, аргумента функции и нестатических или статических переменных-членов. В этом контексте модификатор переменной преобразуется в константу. Переводчик языка перевода проверит, пытается ли какой-либо код изменить значение, и такие попытки будут помечены как ошибка. Вот пример.
конечное значение int = 17;
Статические переменные-члены с этим модификатором используются в качестве глобальных констант; например, в переменной java.lang.Math PI указывается точно
публичная статическая финальная двойная PI = 3.14159265358979323846;
Мы можем применить модификатор final к объявлению функции. Функция, помеченная как финальная, больше не может быть отменена - это ее финальная реализация. Абстрактные методы не могут быть объявлены как окончательные - тот факт, что они являются абстрактными, означает, что им не хватает реализации; это конечно не может быть их окончательным состоянием. Вот пример.
public final int senseLife ()
возврат 42;
Мы можем применить модификатор final к объявлению класса. Класс, помеченный как final, больше не может наследовать - это его окончательная реализация. Понятно, что абстрактный класс не может быть одновременно конечным. Вот пример
закрытый финал
// ...
Одним из примеров конечного класса является класс java.lang.String - он конечен, поэтому никто не может его наследовать и, таким образом, получить доступ к его переменным-членам.
Статические переменные не принадлежат конкретному экземпляру класса. Статические переменные принадлежат самому классу, и в памяти имеется только одно местоположение, независимо от количества копий этого класса, созданных в памяти. Нестатические переменные принадлежат образцам классов - каждый экземпляр класса имеет свою собственную копию таких переменных. Статические переменные принадлежат классу - класс в памяти хранит значения таких переменных; поэтому все примеры классов видят одно и то же содержимое, поэтому мы можем рассматривать статические переменные как общие для всех размеров классов. При обновлении переменной value новое значение будет автоматически видимым для всех экземпляров этого класса. Статический фильтр может применяться к любому элементу, юридически объявленному внутри класса. В случае переменных принадлежности, следствие состоит в том, что такие переменные-члены будут храниться в памяти только в одном месте. Что произойдет, если это метод? Объявляя метод как статический, сообщение остается тем же: соответствующий метод принадлежит не классам классов, а самому классу. Следовательно, статические методы не получат скрытую ссылку на объект, над которым они вызываются при вызове; в статических ссылочных методах это недоступно. Действительно, вызов статических методов через объект в равной степени запутывает доступ к статическим переменным-членам, ссылаясь на эту ссылку: в обоих случаях лучше просто написать имя класса, точку и имя вызывающего метода..
Static обозначает переменную, которая является общей для всех объектов, которые создают экземпляр данного класса, в то время как final определяет константу.
Статический - это метод, который одинаков для каждого объекта данного класса - также называется членом класса, например. таков основной метод. Окончательный метод не может быть обработан в унаследованном классе.
Финал не может быть расширен, т.е. не допускает подклассы. Статика не распространяется на класс.
Проще говоря, финал означает, что значение не может быть изменено (переопределить). Статическое значение установлено в значение по умолчанию, но может быть переинициализировано.