Java static,final,static final

째훈·2022년 3월 10일
0

Java static,final,static final

1,Static

"고정된"이라는 의미
객체 생성 없이 사용할 수 있는 필드와 메소드를 생성하고자 할 때 활용한다

공용 데이터에 해당하거나 인스턴스 필드를 포함하지 않는 메소드를 선언하고자 할 때 이용한다

//선언
public class StaticInfo{
	static int cv = 1;
    
    static int sum(int x, int y) {
    	return x + y
    }
}

//사용 : 클래스이름.필드
int a = StaticInfo.sum(1,2); // 3
int b = StaticInfo.cv + 3;  // b = 4

객체 참조 변수를 이용할 수 있지만 추천하지 않음

StaticInfo c = new StaticInfo();
int d = c.sum(1,2);

인스턴스 필드나 메소드, 그리고 this 키워드를 사용할 수 없다

public class StaticInfo{
  static int cv = 1;
  int iv;

  void method1(){}
  static void method2(){}
  
  static int method3(int x, int y){
    this.iv = 10; // <-- x
    this.method1(); // <-- x
    iv = 10; // <-- o
    method2(); // <-- o
  } 
}

2,final

final은 "최종적인"이라는 의미
즉, 해당 변수는 값이 저장되면 최정적인 값이 되므로, 수정이 불가능하다는 의미이다.

//final필드에 값을 저장하는 방법

public class Store{

  final int closeTime = 22;
  final int openTime;

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

하나는 closeTime과 같이 선언과 동시에 값을 주는 방법이 있고 openTime과 같이 생성하고, 객체를 생성할 때 생성자 public Store에 의해 값을 주는 방법이 있다.

위와같이 설정하면, 오픈 시간은 객체마다 다르게, 닫는 시간은 고정되도록 설정이 가능하다

3,final static

static + final = "고정된 + 최종적인"의 의미로, 상수를 선언하고자 할 때 사용된다.

상수란,fixed로 변하지 않는 값을 뜻하는데
이전 final 예시에서 볼 수 있드시 final자체 만으로는 상수를 의미할 수 없다

//선언: 관행적으로 전부 대문자로 쓴다
static final double PI = 3.141592;
제목내용
static객체마다 가질 필요가 없는 공용으로 사용하는 필드 혹은 인스턴스 필드를 포함하지 않는 메서드
final한 번 값이 정해지고 나면 값을 바꿀 수 없는 필드
static final모든 영역에서 고정된 값으로 사용하는 상수
profile
미완성형 지성체

0개의 댓글