В Java, какая цель выполняет ключевые слова final
, finally
и finalize
?
В Java, какую цель выполняют ключевые слова `final`,` finally` и `finalize`?
Ответ 1
конечная
final
может использоваться для обозначения переменной "неизменяемый"
private final String name = "foo"; //the reference name can never change
final
также может сделать метод не "переопределяемым"
public final String toString() { return "NULL"; }
final
также может сделать класс не "наследуемым". то есть класс не может быть подклассом.
public final class finalClass {...}
public class classNotAllowed extends finalClass {...} // Not allowed
, наконец,
finally
используется в операторе try/catch для выполнять код "всегда"
lock.lock();
try {
//do stuff
} catch (SomeException se) {
//handle se
} finally {
lock.unlock(); //always executed, even if Exception or Error or se
}
Java 7 имеет новую попытку с инструкцией ресурсов, которую можно использовать для автоматического закрытия ресурсов, явно или неявно реализующих java.io.Closeable или java.lang.AutoCloseable
финализации
finalize
вызывается, когда объект собирает мусор. Вам редко приходится переопределять его. Пример:
protected void finalize() {
//free resources (e.g. unallocate memory)
super.finalize();
}
Ответ 2
- "Финал" означает, что что-то не может быть изменено. Обычно вы хотите использовать это для статических переменных, которые будут иметь одинаковое значение на протяжении всей вашей программы.
- "Наконец" используется вместе с блоком try/catch. Все, что находится внутри предложения "finally", будет выполнено независимо от того, генерирует ли код в блоке "try" исключение или нет.
- "Finalize" вызывается JVM до того, как объект собирается собирать мусор.
Ответ 3
http://allu.wordpress.com/2006/11/08/difference-between-final-finally-and-finalize/
final - объявление константы.
finally - блок finally всегда выполняется, когда блок try выходит, кроме вызова System.exit(0). Это гарантирует, что блок finally будет выполнен, даже если произойдет непредвиденное исключение. Но, наконец, полезно не только для обработки исключений - это позволяет программисту избежать случайного обхода кода очистки путем возврата, продолжения или разрыва. Ввод кода очистки в блок finally всегда является хорошей практикой, даже если не ожидается никаких исключений.
finalize() - метод помогает в сборе мусора. Метод, который вызывается перед тем, как объект отбрасывается сборщиком мусора, что позволяет ему очищать его состояние. Не следует использовать для освобождения ресурсов без памяти, таких как дескрипторы файлов, сокеты, соединения с базой данных и т.д., Потому что Java имеет только конечное количество этих ресурсов, и вы не знаете, когда сбор мусора начнет выпускать эти ресурсы без памяти через метод finalize().
Вы пытались выполнить поиск в google и нуждаетесь в разъяснении для объяснения?
Ответ 4
Конечное ключевое слово используется для объявления констант.
final int FILE_TYPE = 3;
Ключевое слово finally используется в инструкции try catch, чтобы указать блок кода для выполнения независимо от выбранных исключений.
try
{
//stuff
}
catch(Exception e)
{
//do stuff
}
finally
{
//this is always run
}
И, наконец, (ха-ха), финализировать im не совсем уверен в ключевом слове, но есть функция finalize() в классе Object.
Ответ 5
конечная: final - ключевое слово. Переменная, усеченная как окончательная, должна быть инициализируется только один раз и не может быть изменен. Классы Java объявленный как окончательный, не может быть расширен. Методы, объявленные как окончательные нельзя переопределить.
наконец: Наконец, это блок. Блок finally всегда выполняется, когда попробуйте выйти из блока. Это гарантирует выполнение блока finally даже если возникает непредвиденное исключение. Но, наконец, полезно больше, чем просто обработка исключений - это позволяет программисту избегайте случайного обхода кода очистки, продолжить или перерыв. Ввод кода очистки в блок finally всегда хорошая практика, даже если не ожидается никаких исключений.
финализации: finalize - это метод. Перед тем, как объект будет собирать мусор, runtime system вызывает метод finalize(). Вы можете написать систему код выпуска ресурсов в методе finalize() до получения мусора собраны.
Ответ 6
1. Окончательный • Final используется для применения ограничений на класс, метод и переменную. • Конечный класс не может быть унаследован, окончательный метод не может быть переопределен, а значение конечной переменной не может быть изменено. • Конечные переменные инициализируются во время создания, за исключением пустой конечной переменной, которая инициализируется в Constructor. • Финал - это ключевое слово.
2. Наконец • Наконец, используется для обработки исключений вместе с try и catch. • Он будет выполняться независимо от того, обрабатывается ли исключение или нет. • Этот блок используется для закрытия ресурсов, таких как подключение к базе данных, ресурсы ввода-вывода. • Наконец, это блок.
3. Доработка • Finalize вызывается потоком сбора мусора непосредственно перед тем, как собирать подходящие объекты для выполнения очистки. • Это последний шанс для объекта выполнить любую очистку, но поскольку он не гарантирует, что будет вызываться finalize(), его плохая практика - сохранить ресурс до завершения вызова. • Finalize - это метод.
Ответ 7
final:
- Переменные: Значение не может быть изменено после инициализации.
- Метод: Этот метод нельзя переопределить подклассом.
- Класс: Класс не может быть подклассом.
наконец:
Ключевое слово finally используется в сочетании с блоком try/catch и гарантирует, что раздел кода будет выполнен, даже если выбрано исключение.
завершить:
Автоматический сборщик мусора вызывает метод finalize() непосредственно перед фактическим уничтожением объекта. Поэтому класс может переопределить метод finalize() из класса Object, чтобы определить пользовательское поведение во время сбора мусора