Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 면접(java
- aop
- CS
- HTML
- ArrayList
- Entity
- 자바
- 정렬 알고리즘(sort algorithm)
- 개발자 취업
- 자료구조
- wil
- 배열
- Til
- 항해99
- 코딩테스트 준비
- 99클럽
- 회고
- 코딩문제
- 코딩공부
- Java
- css
- 메서드
- 프로그래머스
- Grafana
- GIT
- Spring
- cs 공부)준비
- 코딩
- github
- 이진 탐색(binary search)
Archives
- Today
- Total
hayu's 개발 일지
[TIL]240706 final 본문
공부한 내용
final
- final 키워드는 이름 그대로 끝이라는 뜻이다.
- 변수에 final 키워드가 붙으면 더는 값을 변경할 수 없다.
- final 은 class , method 를 포함한 여러 곳에 붙을 수 있다.
final 지역변수
package final1;
public class FinalLocalMain {
public static void main(String[] args) {
//final 지역 변수1
final int data1;
data1 = 10; //최초 한번만 할당 가능
//data1 = 20; //컴파일 오류
//final 지역 변수2
final int data2 = 10;
//data2 = 20; //컴파일 오류
method(10);
}
//final 매개변수
static void method(final int parameter) {
//parameter = 20; 컴파일 오류
}
}
- final을 지역 변수에 설정할 경우 최초 한번만 할당할 수 있다. 이 후에 값을 변경하려면 컴파일 오류가 발생한다.
- 매개변수에 final이 붙으면 메서드 내부에서 매개변수의 값을 변경할 수 없다. 따라서 메서드 호출 시점에 사용된 값이 끝까지 사용된다.
final 멤버변수
// field 초기화
class Data {
public final int value1 = 10;
private final int value2;
public Data(final int value2) {
this.value2 = value2;
}
}
// Constructor 를 통한 변수 초기화
class DataMain1 {
public static void main(String[] args) {
Data data1 = new Data(2); // initiate된 value2 는 절대 변경될 수 없음
}
멤버변수는 총 2가지 방법으로 초기화 될 수 있다.
- Constructor를 통한 변수 초기화
- instance 생성 후 field 는 1번만 constructor로 초기화할 수 있다.
- field 를 통한 변수 초기화모든 instance 에서 같은 값인 MY_VALUE 가 존재하게 된다. 결국 중복으로 메모리만 차지하게 된다.
- field 에서 직접 변수를 초기화할 수도 있는데, 절대 변수가 변경되지 않는다.
static final 과 상수
- field초기화로 인스턴스마다 변화하지 않고, 모든 인스턴스들이 같은 값을 공유하는 경우static final을 사용하는 것이 유리하다.
- 상수란 : 변하지 않고 항상 일정한 값을 같는 수로, 존재하지 않는 고정된 값을 말한다.
→ 상수는 static final 키워드를 사용한다.
자바 상수 특징
- static final 키워드를 사용한다.
- 일반적인 변수와 상수를 구분하기 위해 이렇게 한다.
- 필드를 직접 접근해서 사용한다.
- 상수는 값을 변경할 수 없다. 따라서 필드에 직접 접근해도 데이터가 변하는 문제가 발생하지 않는다.
final 변수와 참조
final 변수는 변수의 값을 변경하지 못하게 한다.
final 참조형 변수
- 참조값만 변경되지 않는다.
- instance 의 멤버 변수는 변경이 가능하다.
회고
- final을 사용하면서 왜 사용하는지, 어떤 곳에 쓸 수 있는지 생각하지 못했던 것 같다.
- final 공부를 하면서 다시한번 개념을 공부할 수 있는 시간이었다.
'기술 > java' 카테고리의 다른 글
[TIL]240711 자바 코드 구조 이해 (0) | 2024.07.11 |
---|---|
[TIL]240710 상속 (0) | 2024.07.10 |
[TIL]240705 static (0) | 2024.07.05 |
[TIL]240704 자바 메모리 구조 (0) | 2024.07.04 |
[TIL]240702 접근 제어자(2) (0) | 2024.07.02 |