찾다
JavaJava시작하기자바 객체 지향 최종 수정자

자바 객체 지향 최종 수정자

Nov 26, 2019 pm 02:43 PM
finaljava수정자객체지향

자바 객체 지향 최종 수정자

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);}
}

2. 생성자 또는 초기화 블록 초기화에서 최종 멤버 변수를 수정하려는 경우 초기화 전에 멤버 변수의 값에 액세스하지 마세요.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 CSDN에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기