Это 6-й день моего участия в ноябрьском испытании обновлений.Подробности о событии:Вызов последнего обновления 2021 г.
Важное примечание: эта статья является одной из серии статей блоггера «Избранные вопросы для интервью — основы», ознакомьтесь с серией статей об интервью.пожалуйста следуйте за мной. Адрес с открытым исходным кодом Gitee:git ee.com/oppo/inter V…
Сложность темы: низкая
Общая степень: высокая
1.заключительное введение
final — это ключевое слово в языке Java, объект, украшенный final, не может изменять или заменять исходное значение или определение.
Final можно использовать для изменения: классов, методов, переменных и параметров, которые можно использовать для изменения элемента «parameter», о котором легко забыть Это четыре варианта использования final.
1.1 окончательные инструкции по использованию
- Когда класс окончательно изменен, этот класс не может быть унаследован, что означает, что этот класс спроектирован идеально и не нуждается в изменении и расширении.
- Когда метод завершен, этот метод не позволяет ни одному классу, наследующему от этого класса, переопределить этот метод, указывая на то, что функция, предоставляемая этим методом, уже соответствует текущим требованиям и не нуждается в расширении.
- Когда final изменяет переменную, это означает, что переменная не может быть изменена после ее инициализации.
- Когда параметр изменяется с помощью final, это означает, что параметр не может быть изменен во всем методе.
1.2 дисплей окончательного использования
окончательный украшенный класс:
final class Animal {
}
окончательный модифицированный метод:
public class FinalExample {
public final void sayHi() {
System.out.println("Hi~");
}
}
окончательная измененная переменная:
public class FinalExample {
private static final String MSG = "hello";
//......
}
окончательные измененные параметры:
public class FinalExample {
public void sayHi(final String name) {
System.out.println("Hi," + name);
}
}
2. Наконец введение
Наконец, в Java есть механизм, гарантирующий выполнение ключевого кода.
Мы можем использовать try-finally или try-catch-finally, чтобы выполнять такие действия, как закрытие JDBC-соединений, блокировка гарантированного освобождения и т. д.
2.1, наконец, отображение использования
try {
// do something
} finally {
// 一定会执行的代码
}
2.2 наконец расширение
Иногда в интервью будут спрашивать: наконец-то казнят? Это вопрос с подозрением на побуждение.При нормальных обстоятельствах finally будет выполнен, но есть особый случай, когда finally не будет выполнен.Специальный код реализации и результаты выполнения следующие:
3.Введение в доработку
finalize — это базовый метод в классе Object. Цель его разработки — гарантировать, что объект завершает освобождение определенных ресурсов перед сборкой мусора, но в JDK 9 он был помечен как устаревший метод (deprecated).
Метод finalize не рекомендуется использовать в реальной разработке, хотя он и создан, он не может гарантировать, что метод finalize будет выполнен, поэтому не полагайтесь на него для освобождения каких-либо ресурсов, потому что его выполнение крайне нестабильно. Отказ от поддержки в JDK 9 также является хорошим примером этого момента.
окончательно решить проблемы с производительностью
В дополнение к «нестабильному» выполнению finalize есть определенные проблемы с производительностью.
Поскольку выполнение finalize связано со сборкой мусора, реализация непустого метода finalize приведет к замедлению восстановления соответствующего объекта на порядок. помедленнее.
Поскольку finalize предназначен для вызова перед сборкой мусора, это означает, что объект, реализующий метод finalize, является «особым гражданином», и JVM должна иметь с ним дело дополнительно. finalize по сути становится блокировщиком для быстрой сборки, что может привести к тому, что ваши объекты будут проходить несколько циклов сборки мусора, прежде чем будут собраны.
Суммировать
final, final и finalize с точки зрения буквального английского языка кажутся очень похожими, на самом деле эти три не имеют ничего общего с Java. final - это ключевое слово, используемое для изменения классов, методов, переменных и параметров. Объекты, измененные с помощью final, не могут изменять или заменять свои исходные значения или определения, finally - это механизм в Java, гарантирующий, что ключевой код должен быть выполнен; finalize — это базовый метод в классе Object. Цель его разработки — гарантировать, что объект завершает переработку определенных ресурсов перед сборкой мусора, но его выполнение «нестабильно» и имеет определенные проблемы с производительностью. Для него установлено значение JDK 9. , Устаревший метод.
Ссылки и благодарности
«Эссе интервью с Java Core Technology»