Java에는 final 키워드가 있으며 변수는 final 유형으로 선언될 수 있으며 final 유형 변수는 한 번만 할당될 수 있습니다. 최종 변수에 반복적으로 값을 할당하면 컴파일 오류가 발생합니다.
final 키워드의 의미는 무엇인가요?
final은 멤버 변수, 메소드, 클래스, 지역 변수를 선언할 수 있는 Java의 예약어입니다. 참조 final을 선언한 후에는 참조를 변경할 수 없습니다. 변수를 다시 초기화하려고 하면 컴파일러는 코드를 확인하고 컴파일 오류를 보고합니다.
최종변수란 무엇인가요?
final로 선언된 모든 멤버 변수 또는 지역 변수(메서드 또는 코드 블록의 변수를 지역 변수라고 함)를 최종 변수라고 합니다. 최종 변수는 종종 static 키워드와 함께 상수로 사용됩니다. 다음은 최종 변수의 예입니다.
public static final String LOAN = "loan";
LOAN = new String("loan") //잘못된 컴파일 오류
최종 변수는 다음과 같습니다. 읽기 전용 .
final 메소드란 무엇인가요?
Final 메소드에서도 메소드를 선언할 수 있습니다. 메서드 앞에 final 키워드를 추가하면 이 메서드는 하위 클래스의 메서드로 재정의될 수 없습니다. 메소드의 기능이 충분히 완성되어 하위 클래스에서 변경할 필요가 없다고 생각되면 해당 메소드를 final로 선언할 수 있습니다. 최종 메서드는 컴파일 타임에 정적으로 바인딩되고 런타임에 동적으로 바인딩될 필요가 없기 때문에 최종이 아닌 메서드보다 빠릅니다. 다음은 최종 메소드의 예입니다.
class PersonalLoan{ public final String getName(){ return "personal loan"; } } class CheapPersonalLoan extends PersonalLoan{ @Override public final String getName(){ return "cheap personal loan"; //compilation error: overridden method is final } }
최종 수업이란 무엇인가요?
final로 수정된 클래스를 final 클래스라고 합니다. 최종 클래스는 일반적으로 기능적으로 완전하며 상속될 수 없습니다. Java에는 String, Interger 및 기타 래퍼 클래스와 같은 최종 클래스가 많이 있습니다. 다음은 최종 클래스의 예입니다.
final class PersonalLoan{ } class CheapPersonalLoan extends PersonalLoan{ //compilation error: cannot inherit from final class }
최종 키워드의 이점
다음은 최종 키워드 사용의 몇 가지 이점을 요약한 것입니다
최종 키워드는 성능을 향상시킵니다. JVM과 Java 애플리케이션 모두 최종 변수를 캐시합니다.
추가 동기화 오버헤드 없이 멀티스레드 환경에서 최종 변수를 안전하게 공유할 수 있습니다.
final 키워드를 사용하여 JVM은 메소드, 변수 및 클래스를 최적화합니다.
변수는 다음 상황에 해당하는 경우에만 효과적으로 간주됩니다.
1. 최종으로 선언되지 않음
2. 가장 간단한 설명 방법
최종이러한 수정 후에도 프로그램이 여전히 오류 없이 실행되고(컴파일이 통과된 경우 ^0^) 원래 실행 결과와 일치하는 경우 이 변수는 사실상 유효하다고 말할 수 있습니다. 결정적인. final의 이점
final 키워드 사용
"클래스 파일의 최적화를 위해 소스 파일에서 final 키워드를 사용하는 것은 올바르지 않다"는 주장이 많이 있습니다. final 키워드 사용에 대한 Robert Simons Jr의 "
Hardcore Java"을 읽어보는 것이 좋습니다. 세부 콘텐츠를 최적화했습니다. 애플리케이션에서 최종 키워드는 코드의 의도를 분명하게 보이게 하며 선언 후에도 변경되지 않으므로 매우 안전합니다.
public class FinalTest { public static final int N_ITERATIONS = 10_00_000; public static String testFinal() { final String a = "a"; final String b = "b"; return a + b; } public static String testNonFinal() { String a = "a"; String b = "b"; return a + b; } public static void main(String[] args) { long tStart, tElapsed; tStart = System.currentTimeMillis(); for (int i = 0; i < N_ITERATIONS; i++) testFinal(); tElapsed = System.currentTimeMillis() - tStart; System.out.println("Method with finals took " + tElapsed + " ms"); tStart = System.currentTimeMillis(); for (int i = 0; i < N_ITERATIONS; i++) testNonFinal(); tElapsed = System.currentTimeMillis() - tStart; System.out.println("Method without finals took " + tElapsed + " ms"); } }
Method with finals took 5 ms Method without finals took 273 ms
위 내용은 최종 종합 심층 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!