static, final, static final 차이점

dev·2023년 1월 17일
0

Java

목록 보기
1/1

static

정적인(고정된)

객체 생성 없이 사용가능한 필드/메소드를 생성할때 활용

필드나 메소드를 객체마다 다르게 가져야한다면 인스턴스로 생성하고,
공통적으로 사용할 데이터이거나 인스턴스 필드를 포함하지 않는 메소드를 선언하고자 할때 이용한다.

사용시에는 클래스이름.필드로 사용한다.
정적 메소드는 객체 참조 없이 사용할수있는 특징 때문에 인스턴스 필드/메소드나 this 키워드를 사용할 수 없다.

final

최종적인
final 키워드가 붙은 변수는 값이 한번 저장되면 최종값이 되므로 수정 불가하다.

final 필드에 선언과 동시에 초기화 할수도 있고,
생성하고, 객체를 생성할때 생성자를 이용해 초기화 하는 방법도 있다.

//오픈 시간은 객체마다 다르게 설정 가능하고, 닫는 시간은 고정된다. 
public class Shop{

  final int closeTime = 21;
  final int openTime;

  public Shop(int openTime){
    this.openTime = openTime;
  }
}

모든 가게의 문을 닫는 시간은 21시로 정해져있고,
오픈 시간은 자유롭게 정하되, 한번 정한 오픈 시간은 바꿀수 없다면 위와 같이 코드를 작성하면 된다.

static final

고정된 + 최종적인
상수를 선언할때 사용

상수(constant)란 fixed로 변하지 않는 값이라는 뜻인데
final만으로는 오픈시간을 객체마다 다른 숫자로 정할수 있었으므로
final 자체만으로는 상수를 의미할 수 없다.

static final double PI = 3.141592;

불변의 값인 pi 값은 객체마다 다르게 저장될 필요 없이 공통적이고(static)
여러 값을 가질수 없으므로(final)

static final로 상수화 한것이다.

static객체마다 다르게 가질필요 없는 공용 필드 혹은 인스턴스 필드를 포함하지 않는 메소드
final한번 값이 정해지고 나면 값을 변경할수 없는 필드
static final모든 영역에서 고정된 값으로 사용하는 상수
profile
hello world!

0개의 댓글