Разница между финальной и статической

В математике и естественных науках константа - это термин, обозначающий определенное значение, например «π», которое является практическим названием числа 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 новое значение будет автоматически видимым для всех экземпляров этого класса. Статический фильтр может применяться к любому элементу, юридически объявленному внутри класса. В случае переменных принадлежности, следствие состоит в том, что такие переменные-члены будут храниться в памяти только в одном месте. Что произойдет, если это метод? Объявляя метод как статический, сообщение остается тем же: соответствующий метод принадлежит не классам классов, а самому классу. Следовательно, статические методы не получат скрытую ссылку на объект, над которым они вызываются при вызове; в статических ссылочных методах это недоступно. Действительно, вызов статических методов через объект в равной степени запутывает доступ к статическим переменным-членам, ссылаясь на эту ссылку: в обоих случаях лучше просто написать имя класса, точку и имя вызывающего метода..

Разница между финальной и статической

  1. переменная

Static обозначает переменную, которая является общей для всех объектов, которые создают экземпляр данного класса, в то время как final определяет константу.

  1. метод

Статический - это метод, который одинаков для каждого объекта данного класса - также называется членом класса, например. таков основной метод. Окончательный метод не может быть обработан в унаследованном классе.

  1. Учебный класс

Финал не может быть расширен, т.е. не допускает подклассы. Статика не распространяется на класс.

  1. Значение

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

Финал против статики: Сравнительная таблица

Краткое изложение финального и статического

  • Ключевой рабочий статический обеспечивает доступ даже при отсутствии объекта (экземпляра). Выдающиеся классы объявляются через ключевое слово static. Если вы не хотите, чтобы значение некоторых изменений было внесено позднее в программу, или если вы хотите, чтобы компилятор проверял и запрещал, вы можете изменить это обещание до окончательного. Есть статический блок для инициализации. Статический блок для инициализации объявляется как статический ключ перед скобками. Этот тип блока выполняется один раз, во время чтения классов, и обычно инициализирует статические члены класса..