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 |