자바 기초 튜 토리 얼 의 final 키워드 에 대한 분석

4738 단어 자바키워드final
머리말
앞에서스 트 링 설명에서 final 키 워드 를 언급 했 고 본 고 는 final 키 워드 를 분석 할 것 이다.
static 과 final 은 우리 가 파악 해 야 할 두 가지 키워드 이다.다른 키워드 와 달리 그들 은 모두 여러 가지 용법 을 가지 고 있 으 며 일정한 환경 에서 사용 하면 프로그램의 운행 성능 을 향상 시 키 고 프로그램의 구 조 를 최적화 할 수 있다.다음은 final 키워드 와 그 용법 을 알 아 보 겠 습 니 다.
final 은 전체적으로 볼 때'가 변 적 이지 않 은'것 으로 클래스,방법,변 수 를 수정 하 는 데 사용 할 수 있다.
final 클래스
final 수식 클래스 는 계승 할 수 없습니다.영원히 계승 되 지 않 거나 계승 되 고 싶 지 않다 는 것 을 확인 하면 final 로 수식 할 수 있다.

마찬가지 로 인터페이스(interface)와 추상 류(abstract Class)는 원래'다 중'을 위해 디자인 된 것 이기 때문에 final 키워드 로 수식 할 수 없다.


final 클래스 의 구성원 방법 은 기본적으로 final 방법 으로 지정 되 어 있 습 니 다.
최종 방법
final 수식 방법 은 다시 쓰 면 안 됩 니 다.
예:

/**
 *   
 * @author LH
 */
public class FinalDemo1 {
 public final void test() {
  
 }
}

final 변수
final 변 수 는 구성원 변수 와 부분 변 수 를 포함한다.변수 형식 은 기본 데이터 형식,대상 을 포함한다.
final 수식 부분 기본 형식 변수(및 포장 류)를 통 해 수 치 는 초기 화(정의 할 때 초기 화 할 수도 있 고 사용 전에 초기 화 할 수도 있 습 니 다)되 지 않 습 니 다.예:

final int a = 0;
a = 1;//  
final int b;
b = 1;//    
final 을 통 해 부분 참조 형식 변 수 를 수식 할 때 인용 대상(메모리 주소)(정의 할 때 초기 화 할 수도 있 고 사용 전에 초기 화 할 수도 있 습 니 다)은 변경 할 수 없 지만 대상 에 저 장 된 데 이 터 는 변경 할 수 있 습 니 다.

public static void main(String[] args) {
 final String str1 = "helloWorld";
 str1 = "helloChina";//    ,String     ,            。

 final StringBuilder sb = new StringBuilder("hello");
 sb.append("world");//    

 sb = new StringBuilder("China");//    
}
final 수식 멤버 변 수 는 정의 할 때 직접 초기 화 해 야 합 니 다.그렇지 않 으 면 컴 파일 오류 가 발생 할 수 있 습 니 다.

public class FinalDemo1 {
 public final int age;//final       ,    
 public final int age1 = 20;//final       ,    
 public final StringBuilder address;// final       ,    
 public final StringBuilder address1 = new StringBuilder("  ");//final       ,    
}
그러면 final 변수 와 일반 변수 사이 에 어떤 차이 가 있 는 지 아래 의 예 를 보 세 요.

public static void main(String[] args) {
 String str0 = "helloWorldChina";
 String str1 = "helloWorld";
 String str3 = str1 + "China";
 System.out.println(str0 == str3);//false
 
 final String str2 = "helloWorld";
 String str4 = str2 + "China";
 System.out.println(str0 == str4);//true
 
 final String str5;
 str5 = "helloWorld";
 String str6 = str5 + "China";
 System.out.println(str0 == str6);//false
}
str 0==str 3 실행 결 과 는 false 입 니 다.이것 은'+'를 통 해 새로운 문자열 대상 을 생 성 했 기 때 문 입 니 다.되 돌아 오 는 참조 주 소 는 str 0 과 다 릅 니 다.이것 은'자바 기초(3)String 깊이 분석'에서 설명 되 어 있 습 니 다.
그럼 str 0==str 4 의 실행 결 과 는 왜 true 입 니까?
final 수식 변 수 를 통 해 컴 파일 기간 에 정확 한 값(변 수 를 정의 할 때 초기 화)을 알 수 있다 면 컴 파일 러 에서 상수 로 사용 합 니 다.이 변 수 를 사용 하 는 모든 곳 은 이 상수 에 해당 합 니 다.String str 4=str2+"China"는 컴 파일 기간 에 String str 4="hello World China"로 통합 처리 되 었 습 니 다.따라서 str0 과 str4 는 상수 탱크 의 같은 문자열 의 글자 크기 의 주 소 를 인용 하여 true 로 결 과 를 얻 었 습 니 다.
그리고 str 0==str 6 의 실행 결과 가 false 라 는 것 도 잘 이해 합 니 다.
str 5 는 컴 파일 기간 에 정확 한 값 을 모 르 고 사용 하기 전에 초기 화 되 었 기 때문에 컴 파일 러 는 사전에 통합 처 리 를 할 수 없습니다.str 6 는'+'를 통 해 새로운 문자열 대상 을 만 들 었 고 돌아 오 는 참조 주소 와 str0 도 다 릅 니 다.
기본 데이터 형식 에 있어 final 변수 와 일반 변수 로 정의 되 고 비교 결과 에 있어 차이 가 없다.

public static void testint(){
 int int0 = 8; 
 final int int1; 
 int1 = 4; 
 int int2 = int1 + 4; 
 System.out.println(int2 == int0);//true
}
기본 데이터 형식 은 인용 전달 의 개념 이 존재 하지 않 고 기본 유형 변수 도 문자 상수 이기 때문에 기본 유형 에 대한 조작 은 모두 값 에 대한 조작 이 고 인용 과 다 르 며 주소 가 아 닙 니 다.
총화
본 고 는 주로 final 키워드 의 원 리 를 설명 하 는 동시에 그 기본 적 인 용법 에 대해 설명 했다.final 수식 의 유형,final 수식 의 방법 과 final 수식 의 변 수 를 포함한다.또한 글 에서 String 변 수 는==비 교 를 통 해 final 원 리 를 더욱 명확 하 게 설명 하기 위해 실제 응용 장면 을 비교 할 때 equals()방법 을 사용한다.final 도 자주 static 와 협조 하여'전역 상수'로 사용 합 니 다.잘못된 점 이 있 으 면 비판 하고 지적 하 며 함께 발전 하 시기 바 랍 니 다.감사합니다!
자,이상 이 이 글 의 모든 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기