30. final 키워드

2025. 8. 27. 08:58·Java

final 

final은 값을 고정하는 키워드이다.

final - 지역 변수

  • 최초 한번만 할당 가능하다. 할당 후 값을 변경할려고 하면 에러가 발생한다.

final - 매개 변수

  • 인자로 들어온 값의 변경이 불가능하다. 변경 시도 시 에러가 발생한다.
  • 매개 변수가 메서드 내에서 변하지 않는다는 것을 명시하기 위해 final 을 붙이는 경우가 종종 있다.
public class FinalLocalMain {

    public static void main(String[] args) {
        // final 지역변수
        final int data1;
        data1 = 10; // 최초 한번만 할당 가능
//        data1 = 20; // 컴파일 오류

        // final 지역변수2
        final int data2 = 10; // 값이 이미 할당됨
//        dat2 = 20; // 컴파일 오류

        method(10); // 10으로 param 고정됨
    }

    static void method(final int param) {
//        param = 20;  // param의 값이 이미 10으로 고정됨
    }

}

final - 필드(맴버 변수)

  • 필드에 사용 시 인스턴스 생성 할 때 할당하고 그 뒤에 수정은 불가능하다.
  • 생성할 때 할당하는 이유는 할당 x 시 타입의 기본값이 들어가서다.(아래 value2 참고)

static final - 상수

  • static + final 키워드가 있는 변수
  • 프로그램 전 범위에서 공유되는 고정된 값
  • 인스턴스 생성 없이 호출 가능. (이유는 static 변수와 동일)
  • 대문자로 작성한다 ex) TEST_VALUE
public class TestFinal {

	final int value = 10; // 이미 할당 되어 있어서 수정 불가 
	final int value2; // 생성자를 통해 1번만 할당 가능 그 뒤 수정 불가
	static final int TEST_VALUE = 30; // 상수, static이 붙어 있어서 프로그램 전 범위 사용 가능
	
	// value2에 값이 없어서 생성자를 통해 무조건 할당해야함. 
	// 이유는 값 세팅 x 시 int의 기본값인 0이 들어가서 에러 발생
	public TestFinal(int value2) {
		this.value2 = value2;
	}
	
	public static void main(String[] args) {
		
		TestFinal testFinal = new TestFinal(20);
		System.out.println(testFinal.value);
		System.out.println(testFinal.value2);
		System.out.println(testFinal.value);
	}
}

 

final 변수와 참조

final 변키워드를 기본 자료형이 넣는 것과 참조 자료형에 넣는 것에 따라 차이가 존재한다.

  • 기본 자료형: 값 자체의 변경을 막는다.
  • 참조 자료형: 참조값의 변경을 막는다. 단 필드의 변경을 막지는 못한다.
public class FinalLocalMain {

    public static void main(String[] args) {
        // final 지역변수
        final int data1;
        data1 = 10; // 최초 한번만 할당 가능
//        data1 = 20; // 컴파일 오류


        // final 지역변수2
        final int data2 = 10; // 값이 이미 할당됨
//        dat2 = 20; // 컴파일 오류

        method(10); // 10으로 param 고정됨

		// 다른 파일에 있는 상수를 불러옴
		int testValue = TestFinal.TEST_VALUE;
	}

    static void method(final int param) {
//        param = 20;  // param의 값이 이미 10으로 고정됨
    }

}

final 활용하기

  • 매개 변수가 메서드 내에서 변하지 않는다는 것을 명시하기 위해 final 을 붙이는 경우가 있다.
  • 프로그램에서 공통적으로 사용하는 것에 static final 키워드를 붙여 상수로 만든다.
  • 지역, 맴버 변수에 값을 고정해야 할 경우 final 키워드를 붙인다.
  • 값을 고정해야 한다면 변수에 final을 붙이자
public class FinalLocalMain {

    public static void main(String[] args) {
        // final 지역변수
        final int data1;
        data1 = 10; // 최초 한번만 할당 가능
//        data1 = 20; // 컴파일 오류


        // final 지역변수2
        final int data2 = 10; // 값이 이미 할당됨
//        dat2 = 20; // 컴파일 오류

        method(10); // 10으로 param 고정됨

		int testValue = TestFinal.TEST_VALUE;
	}

    static void method(final int param) {
//        param = 20;  // param의 값이 이미 10으로 고정됨
    }

}

🔗레퍼런스

참고 강의/글

  • 인프런 김영한의 자바 기본편
  • 자바의 정석
  • 페스트켐퍼스 시그니처 백엔드. [course 1] 

'Java' 카테고리의 다른 글

29. static  (2) 2025.08.19
28. 접근 제어자  (1) 2025.07.28
27. 생성자  (1) 2025.07.25
26. 절차지향 VS 객체지향  (1) 2025.07.24
25. 기본형과 참조형, 변수와 초기화 그리고 null  (0) 2025.06.24
'Java' 카테고리의 다른 글
  • 29. static
  • 28. 접근 제어자
  • 27. 생성자
  • 26. 절차지향 VS 객체지향
Parkson
Parkson
Parkson의 개발 공부에 대한 기록
  • Parkson
    Parkson의 공부기록
    Parkson
  • 전체
    오늘
    어제
    • 분류 전체보기 (79)
      • HTML 5 (3)
      • CSS 3 (1)
      • git & github (5)
      • JavaScript (0)
      • Java (30)
      • 에러일지 (1)
      • Web 개발 기초 (9)
      • 반응형 가구 쇼핑몰(학원 파이널 프로젝트) (12)
      • AWS (2)
      • Spring (13)
        • 스프링 코어 (0)
        • 스프링 MVC (3)
      • SpringBoot (2)
      • myBatis (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    ㅜ
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Parkson
30. final 키워드
상단으로

티스토리툴바