본문 바로가기

STUDY

[JAVA] Static vs Final vs Static Final

static과 final의 차이를 명확하게 알고가기 위해 포스팅을 할거임!

 

 

Static

: 객체생성없이 사용할 수 있는 필드와 메소드를 생성하고자 할 때 사용하는 키워드

: 객체 참조 없이 바로 사용하여 즉, 인스턴스 성질을 객체 생성 후 사용할 수 있으므로  this 키워드를 사용할 수 없다

public class Test {
  static int aColumn = 10;

  static int testMethod(int a, int b){
    return a+b;
  }
}

 

이렇게 선언된 Test 클래스의 aColumn 변수와 testMethod() 메소드를 다음과 같이

"클래스명.필드" 또는 "클래스명.메소드" 로 사용가능하다

 

  public void testMethod(){
    int aa = Test.aColumn + 1;
    Test.testMethod(aa, 1);
  }

 

 

 

Final

: 변수에 값이 한번 저장되면 수정이 불가능하다

: final 에 값을 저장하는 방법은 초기화(선언과 동시에 값을 줌), 객체를 생성할 때 생성자에 의해 값 삽입

  이렇게 두가지가 있다.

: 상수라고는 할 수 없다 (이유는 아래 static final에서 설명할거임!)

public class Person {
    final String name = "kim";	// 초기화를 통한 값 저장
    final int age;		// 생성자를 통한 값 저장

    public Person(int age){
    	this.age = age;
    }
}

 

 

 

Static Final

: static 과 final이 합쳐진 의미로 상수를 선언하고자 할 떄 사용된다

: final 같은 경우 초기화를 통해 값을 저장하면 상관없지만

  객체를 생성할 때마다 생성자에 의해 값이 달라질 수 있기 때문에 final을 상수라고 보기에는 힘들다

: 즉, static의 성질(객체 생성 없이 인스턴스 접근가능) + final의 성질(값이 변하지 않음) 을 동시에 가진다고 생각하면 된다

: 여담으로 stati final 또는 final static 이렇게 순서를 바꿔서 사용하기도 하는데

  static final 순으로 사용하는 것이 좋다고 한다

 

static final String name = "KIM";

 

 

 

 

끄읏 -!

'STUDY' 카테고리의 다른 글

[JAVA] 추상클래스 vs 인터페이스  (0) 2024.01.10
데이터 파이프라인(Data pipeline)이란  (0) 2024.01.05