반응형
static
static은 ‘정적인’, ‘고정된’이라는 의미로 전역 공간에서 사용할 수 있습니다.
주로, 객체 생성 없이 사용할 수 있는 필드와 메서드를 생성해 사용한다.
static을 통해 선언한 정적 메서드는 객체 참조 없이(생성 없이) 바로 사용할 수 있어, 인스턴스 필드나 메서드, this 키워드를
사용할 수 없습니다.
왜냐하면, 객체 안에 선언되어 있는 부분은 객체가 생성되기 전까지 메모리에 올라오지 않기 때문에 참조할 수 없다.!!
example code
public class TestClass{
static int field1 = 1234;
int field2;
void method(){}
static void method2(){}
static int testMethod(int x, int y){
this.field2 = 10; // <-- x
this.method(); // <-- x
field1 = 10; // <-- o
method2(); // <-- o
}
}
final
‘최종적인’, ‘결정적인’ 의미로, 값이 한 번 저장되면 수정이 불가능합니다.
final을 활용하여 선언과 동시에 값을 초기화하거나 생성자 주입을 받을 때 해당 변수를 초기화하여, 임의로 해당 인스턴스의 필드 값을 변경하는 것을 방지합니다.
final 초기화 방법
public class CoffeeShop{
final int close = 24;
final int open;
public Shop(int openTime){
this.open = openTime;
}
}
- close 변수와 같이 선언과 동시에 값을 초기화하는 방법이 있습니다.
- open 변수처럼 데이터 타입만 선언하고, 객체가 생성될 때 값을 초기화하는 방법이 있습니다.
static final
static final 은 “고정된” + “최종적인” 이라는 의미로 상수를 선언할 때 사용합니다.
상수란 변하지 않는 값 (즉, 한 번 초기화되면 값이 변경되지 않음)
public class DateUtil {
public static final DateTimeFormatter hmFormatter = DateTimeFormatter.ofPattern("HH:mm");
public static final DateTimeFormatter ymdFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
}
반응형
'JAVA' 카테고리의 다른 글
[Java] Java Switch와 if/else 성능 비교 - jump table, lookup table (1) | 2024.09.17 |
---|---|
[Java] 자바 인코딩, 디코딩, base64 인코딩, 디코딩 처리하기 (1) | 2024.09.14 |
[JAVA] Java 일급 컬렉션 사용법 및 이해하기 (1) | 2024.09.08 |
[JAVA] Java Stream groupingBy 통해 그룹핑하기 (0) | 2024.08.17 |
[JAVA] JDK, JRE, JVM 차이 및 개념 이해하기 (0) | 2024.08.10 |