Java 인스턴스 메서드 vs 클래스 메서드, static을 언제 붙이나?
by 볼빵빵오춘기인스턴스 메서드
- 메서드 앞에 static이 붙지 않은 메서드이다.
- 인스턴스 생성 후 ‘참조변수.메서드이름();’으로 호출한다.
- 인스턴스변수/메서드와 관련있는 작업을 하는 메서드이다.
- 메서드 내에서 인스턴스 변수 사용가능하다.
static 메서드(클래스 메서드)
- 메서드 앞에 static이 붙은 메서드이다.
- Math.random(), Math.round()와 같이 객체 생성없이 ‘클래스이름.메서드이름()’으로 호출한다.
⇒ 객체생성을 하지않아 참조변수가 없다. - 인스턴스 변수/메소드와 관련없는 작업을 하는 메서드이다.
- 메서드 내에서 인스턴스 변수는 사용불가능하다.
static을 언제 붙여야 하나
- 클래스를 설계할 때, 멤버변수 중 모든 인스턴스에 공통으로 사용하는 것에 static을 붙인다.
더보기
why?
생성된 각 인스턴스는 서로 독립적이기 때문에 각 인스턴스 변수는 서로 다른 값을 유지한다.
그러나 모든 인스턴스에서 같은 값이 유지되어야 하는 변수는 static을 붙여서 클래스 변수로 정의해야한다.
- 클래스 변수는 인스턴스를 생성하지 않아도 사용할 수 있다.
더보기
why?
static이 붙은 변수는 클래스가 메모리에 올라갈 때 이미 자동적으로 생성되기 때문이다.
- 클래스 메서드는 인스턴스 변수를 사용할 수 없다.
더보기
why?
인스턴스 변수는 인스턴스가 반드시 존재해야만 사용할 수 있는데
클래스메서드는 인스턴스 생성없이 호출가능하므로
클래스메서드가 호출되었을 때 인스턴스가 존재하지 않을 수 있다.
반면에 인스턴스변수/메서드에서는 static이 붙은 변수/메서드를 언제나 사용가능하다.
- 메서드 내에서 인스턴스 변수를 사용하지 않는다면, static을 붙이는 것을 고려한다.
더보기
why?
메서드 호출시간이 짧아지므로 성능이 향상된다.
static을 안붙인 메서드는 실행 시 호출되어야 할 메서드를 찾는 과정이 추가적으로 필요하기 때문에 시간이 더 길다.
2023.11.28 - [About Programming/Java] - Java 인스턴스 변수 vs 클래스 변수 vs 지역변수
'👩🏻💻 About 프로그래밍 > Java' 카테고리의 다른 글
Java 생성자(constructor) (0) | 2023.11.28 |
---|---|
Java 오버로딩(overloading), 성립조건, 장점, 단점 (0) | 2023.11.28 |
Java return문, 반환값 (0) | 2023.11.28 |
Java 메서드, 메서드 장점 · 작성 · 구성 · 구현부 (0) | 2023.11.28 |
Java 인스턴스 변수 vs 클래스 변수 vs 지역변수 (1) | 2023.11.28 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기