자바 객체 지향 최종 수정자
1. 최종 수정자 정의:
최종 키워드는 클래스, 변수 및 메소드
final이 변수를 수정한다는 것은 초기값을 얻은 후에는 변수를 변경할 수 없다는 의미입니다(엄밀히 말하면 final로 수정한 변수는 변경할 수 없습니다. 초기값을 얻은 후에는 변수가 변경되지 않습니다). final 변수의 값은 변경할 수 없습니다.)
final은 멤버 변수(클래스 변수, 인스턴스 변수)뿐만 아니라 지역 변수, 형식 매개 변수도 수정할 수 있습니다.
관련 비디오 학습 튜토리얼: #🎜🎜 #java재线learning
2. 최종 멤버 변수 문법 규정:
최종 수정 멤버 변수는 프로그래머가 표시해야 합니다. 초기 값을 공식적으로 지정하면 시스템은 최종 멤버를 암시적으로 초기화하지 않습니다. 1. 최종 수정된 클래스 변수와 인스턴스 변수가 초기값을 설정할 수 있는 곳은 다음과 같습니다. 클래스 변수: 초기값은 반드시 a에 지정해야 합니다. 정적 초기화 블록 또는 클래스를 선언해야 합니다. 변수 지정 시 초기값을 지정해야 하며, 두 곳 중 한 곳에서만 지정할 수 있습니다. 인스턴스 변수: 초기값은 a에 지정해야 합니다. 비정적 초기화 블록, 인스턴스 변수 선언 또는 생성자에서만 세 위치 중 하나에서 지정할 수 있습니다참고: 일반 초기화 블록이 지정된 경우 인스턴스 변수의 초기값은 생성자에서 인스턴스 변수를 지정할 수 없습니다. Setinitial value
다음 프로그램은 멤버 변수의 최종 수정 효과를 보여줍니다.
package lextends; public class FinalVariableTest { //定义成员变量时指定默认值,合法 final int a = 6; //下面变量将在构造器或初始化块中分配初始值 final String str; final int c; final static double d; //既没有指定默认值,又没有在初始化块、构造器中指定初始值 //下面定义的ch实例是不合法的 //final char ch; //初始化块,可对没有指定默认值的实例变量指定初始值 { //在初始化块中为实例变量指定初始值,合法 str = "Hello"; //定义a实例变量时已经指定了默认值 //不能为a重新赋值,因此下面赋值语句非法 //a=9; } //静态初始化块,可对没有指定默认值的类变量指定初始值 static { //在静态初始化块中为类变量指定初始值,合法 d = 5.6; } //构造器,可以对既没有指定默认值,又没有在初始化块中,指定初始值的实例变量指定初始值 public FinalVariableTest() { //如果在初始化块中已经对str指定了初始值 //那么在构造器中不能对final变量重新赋值,下面赋值语句非法 //str="java" c = 5; } public void changeFinal() { //普通方法不能为final修饰的成员变量赋值 //d=1.2 //不能在普通方法中为final成员变量指定初始值 //ch = 'a'; } public static void mian(String[] args){ FinalVariableTest ft= new FinalVariableTest(); System.out.println(ft.a); System.out.println(ft.c); System.out.println(ft.d);} }
package lextends; public class FinalErrorTest { //定义一个final修饰的实例变量 //系统不会对final成员变量进行默认初始化 final int age; { //age没有初始化,所以此处代码将引起错误,因为它试图访问一个未初始化的变量 //只要把定义age时的final修饰符去掉,程序就正确了 System.out.println(age); age=6; System.out.println(age); } public static void main(String[] args){ new FinalErrorTest(); } }
3. 최종 지역 변수
1 정의: 시스템은 지역 변수를 초기화하지 않으며 지역 변수는 다음과 같이 표시되어야 합니다. 프로그래머 초기화. 따라서 final을 사용하여 지역변수를 수정하는 경우 정의할 때 기본값을 지정할 수도 있고, 기본값을 지정할 수 없을 수도 있다. 다음 프로그램은 지역 변수와 형식 매개변수의 최종 수정을 보여줍니다. (최종 수정 형식 매개변수의 경우, 메소드가 호출되면 시스템이 수정하기 때문입니다. 전달된 매개변수에 따라 형식 매개변수. 초기화를 완료하기 위해 최종 수정자를 할당할 수 없음)package lextends; public class FinalLocalVariable { public void test(final int a){ //不能对final修饰的形参赋值,下面语句非法 //a=5; } public static void mian(String[] args){ //定义final局部变量时指定默认值,则str变量无法重新赋值 final String str="hello"; //下面赋值语句非法 //str="Java"; //定义final局部变量时没有指定默认值,则d变量可被赋值一次 final double d; d=5.6; //对final变量重新赋值,下面语句非法 //d=6.4; } }
4 최종 수정 기본 유형 변수와 참조 유형 변수의 차이점 #🎜 🎜#final로 수정한 참조형 변수는 재할당할 수 없으나 참조형 변수가 참조하는 객체의 내용은 변경할 수 있다
예를 들어 배열 아래 iArr 변수가 참조하는 객체는 최종 수정 후 iArr 변수를 재할당할 수 없으나, iArr이 참조하는 배열의 요소는 변경할 수 있습니다. 🎜#1. 최종 변수의 경우 인스턴스인지 여부. 변수 또는 지역 변수는 변수가 세 가지 조건을 충족하는 한 최종 변수는 더 이상 변수가 아니지만 직접 수량과 동일합니다.
(1) 최종 수식자를 사용하여 수정
(2) 최종 변수 정의 시 초기값 지정 (3) 초기값 값은 컴파일 시간
2에서 결정될 수 있습니다. 최종 수정자의 중요한 용도는 "매크로 변수"를 정의하는 것입니다. 최종 변수가 정의되면 해당 변수에 초기값이 할당되고 변수인 경우 이를 결정할 수 있습니다. 그러면 이 최종 변수는 본질적으로 "매크로 변수"이며 컴파일러는 프로그램의 모든 변수를 삭제합니다. 이 변수를 사용하는 위치는 변수 값으로 직접 대체됩니다.
3,
eg. //final修饰数组元素,iArr是一个引用变量 final int[] iArr={5,6,12,9}; System.out.println(Arrays.toString(iArr)); //对数组元素进行排序,合法 Arrays.sort(iArr); System.out.println(Arrays.toString(iArr)); //对数组进行元素赋值,合法 iArr[2]=-8; System.out.println(Arrays.toString(iArr)); //下面语句对iArr重新赋值,非法 //iArr=null;
s3의 경우 str1과 str2는 두 개의 일반 변수이므로 컴파일러는 "매크로 대체"를 수행하지 않습니다. 수행되므로 컴파일러는 s3의 값을 결정할 수 없으며 s3을 문자열 풀에 캐시된 "Crazy Java"로 가리킬 수 없습니다.
자바 관련 기사와 튜토리얼을 더 보려면 다음 사이트를 방문하세요.
java 입문 튜토리얼위 내용은 자바 객체 지향 최종 수정자의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Java의 난수 생성기 안내. 여기서는 예제를 통해 Java의 함수와 예제를 통해 두 가지 다른 생성기에 대해 설명합니다.

Java의 Weka 가이드. 여기에서는 소개, weka java 사용 방법, 플랫폼 유형 및 장점을 예제와 함께 설명합니다.

Java의 Smith Number 가이드. 여기서는 정의, Java에서 스미스 번호를 확인하는 방법에 대해 논의합니다. 코드 구현의 예.

이 기사에서는 가장 많이 묻는 Java Spring 면접 질문과 자세한 답변을 보관했습니다. 그래야 면접에 합격할 수 있습니다.

Java 8은 스트림 API를 소개하여 데이터 컬렉션을 처리하는 강력하고 표현적인 방법을 제공합니다. 그러나 스트림을 사용할 때 일반적인 질문은 다음과 같은 것입니다. 기존 루프는 조기 중단 또는 반환을 허용하지만 스트림의 Foreach 메소드는이 방법을 직접 지원하지 않습니다. 이 기사는 이유를 설명하고 스트림 처리 시스템에서 조기 종료를 구현하기위한 대체 방법을 탐색합니다. 추가 읽기 : Java Stream API 개선 스트림 foreach를 이해하십시오 Foreach 메소드는 스트림의 각 요소에서 하나의 작업을 수행하는 터미널 작동입니다. 디자인 의도입니다

Java의 TimeStamp to Date 안내. 여기서는 소개와 예제와 함께 Java에서 타임스탬프를 날짜로 변환하는 방법에 대해서도 설명합니다.

캡슐은 3 차원 기하학적 그림이며, 양쪽 끝에 실린더와 반구로 구성됩니다. 캡슐의 부피는 실린더의 부피와 양쪽 끝에 반구의 부피를 첨가하여 계산할 수 있습니다. 이 튜토리얼은 다른 방법을 사용하여 Java에서 주어진 캡슐의 부피를 계산하는 방법에 대해 논의합니다. 캡슐 볼륨 공식 캡슐 볼륨에 대한 공식은 다음과 같습니다. 캡슐 부피 = 원통형 볼륨 2 반구 볼륨 안에, R : 반구의 반경. H : 실린더의 높이 (반구 제외). 예 1 입력하다 반경 = 5 단위 높이 = 10 단위 산출 볼륨 = 1570.8 입방 단위 설명하다 공식을 사용하여 볼륨 계산 : 부피 = π × r2 × h (4
