static, final

초보개발·2022년 8월 1일
0

JAVA

목록 보기
12/15

static 키워드

static의 사전적 의미는 (변화움직임이 없이) 고정된을 뜻한다. static 키워드를 사용한 메서드나 변수는 객체 인스턴스에 속하지 않고 클래스에 속한다.
인스턴스마다 다른 값, 행동을 해야한다면 static를 사용하지 않으며 공통적으로 사용할 필드와 메서드를 선언할 때 사용한다.

class MyClass {
	static int number = 123; // 정적 변수
    
    static int add(int a, int b) { // 정적 메서드
    	return a + b;
    }
}

클래스이름.필드, 클래스이름.메서드로 사용할 수 있으며 객체를 생성해 객체.필드 등으로 사용할 수 있지만 전자처럼 사용하는 것이 일반적이다.

  • 장점: 모든 인스턴스에서 같은 값을 사용할 때 인스턴스마다 메모리를 더 잡아먹는 것보다 클래스에서 딱 한번의 메모리 공간을 사용해 효율적으로 메모리 공간을 사용할 수 있다.
    하지만 무분별한 사용은 오히려 메모리 공간을 낭비할 수 있다.

주의해야할 점
정적 메소드는 객체 참조 없이 사용할 수 있어서 인스턴스의 필드, 메서드, this 키워드를 사용할 수 없다.
즉, static 메서드 내에서 static이 아닌 this.필드, this.메서드를 사용할 수 없다.
왜냐하면 필드, 메서드는 인스턴스를 생성 후 접근 가능한 값이여서 객체의 참조 없이 사용할 수 있는 static에는 사용할 수 없기 때문이다.

final 키워드

final의 사전적 의미는 마지막의, 최종적인을 뜻한다. final 키워드를 사용하면 마지막 값이 되므로 선언 후에는 수정할 수 없다는 의미이다.

public class MyClass {
	final int number = 10; // 1
    
    final int x; // 2
    
    public MyClass(int x) {
    	this.x = x;
    }
}

final 변수 선언시 바로 값을 할당하거나 생성자로 값을 주입시킬 수 있다. 1번의 경우 한 번 정한 값을 변경할 수 없을 때 사용하고 2번은 객체 인스턴스마다 값을 다르게 할당해 변하지 않는 값을 가질 수 있다.

static final 키워드

static + final = 고정된 + 마지막의라는 의미가 되며 상수 선언시 사용된다. 클래스에 속하고 전역적으로 사용할 수 있는 static의 특징과 immutable한 final의 특징을 가져야할 때 사용한다.

public static final String NAME = "유재석";

0개의 댓글