static 키워드

2022. 5. 1. 09:00·Study/Java
728x90
반응형

static 키워드는 C언어에서도 있던 키워드이다.

 

static은 그럼 대체 왜 사용하는걸까?

 

첫 번째로 객체를 생성하지 않고도 변수를 사용하고 싶을 때 사용한다. 이 녀석은 객체가 생성되지 않아도 먼저 존재하기 때문이다.

 

두 번째는 같은 클래스의 객체가 모두 같은 값을 공유하고 싶을 때 사용한다.

 

 

그럼 static 키워드는 대체 어디에 쓸 수 있을까?

 

당연히 변수에 쓸 수있다.

 

그리고 객체를 생성하지 않고도 사용할 수 있는 메소드가 있다. 이 녀석은 당연히 static 메소드이다.

 

또, class에도 static을 붙일 수 있다. 단, inner class일때만 가능하다.

 

Test class라는 예를 통해 static 키워드에 대해 조금 더 자세히 알아보자

public class Test {
	public int a; //멤버변수 -- 인스턴스가 된(메모리에 만들어진) 객체마다 있으므로 '인스턴스 변수'라고 부른다
	public static int b;// 정적 멤버변수 -- 클래스에 한 개만 있으니까 '클래스 변수'라고 부른다
	
	//생성자 메소드
	public Test() {
		a = 10;
		b = 20;
	}
	
	public Test(int a, int b) {
		this.a = a;
		this.b = b;
	}
	
	//일반 메소드 -- 객체로 인스턴스화해야 사용할 수 있는 메소드
	void aaa() {
		System.out.println("멤버변수 a	: " + a);
		System.out.println("멤버변수 b : " + b);
	}
	
	//static 메소드 -- 객체를 만들지 않고도 사용할 수 있는 메소드
	static void show() {
		//System.out.println("멤버변수 a	: " + a);//static 메소드 안에서는 인스턴스 변수를 사용할 수 없다
		System.out.println("멤버변수 b : " + b);
	}
	
	void bbb() {
		
	}
	
	static void ccc() {
		//bbb(); //static 메소드 안에서 인스턴스 메소드를 호출할 수 없다
	}
}

여기서 인스턴스 변수라고 한 a는 일반적으로 클래스의 멤버변수라고 불리우는 녀석이다.

 

일반 메소드도 마찬가지로 일반적으로 클래스의 메소드라고 불리는 녀석이지만

인스턴스 변수와 마찬가지로 객체로 인스턴스화해야 사용할 수 있다.

 

당연하게도 static 메소드 안에서 인스턴스 변수나 일반 메소드를 사용할 수 없다.

 

왜냐하면, static메소드는 객체 생성 전에도 존재하는데

이 때 인스턴스 변수나 일반 메소드는 객체로 생성되지 않은 상태라면 사용이 불가능하기 때문이다.

728x90
반응형
저작자표시 (새창열림)

'Study > Java' 카테고리의 다른 글

자바의 상속 - 1  (0) 2022.05.04
자바 클래스 안에 다른 클래스의 참조 변수가 있는 상황  (0) 2022.05.02
자바의 생성자(Constructor)  (0) 2022.04.29
자바의 접근 제한자(Access Modifier)  (0) 2022.04.28
자바의 변수 종류  (0) 2022.03.25
'Study/Java' 카테고리의 다른 글
  • 자바의 상속 - 1
  • 자바 클래스 안에 다른 클래스의 참조 변수가 있는 상황
  • 자바의 생성자(Constructor)
  • 자바의 접근 제한자(Access Modifier)
BonusTrack02.dev
BonusTrack02.dev
공부, 일상
  • BonusTrack02.dev
    BonusTrack02.dev
    BonusTrack02.dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (237)
      • Dev experience (85)
        • Android (84)
        • Kotlin (1)
      • Study (62)
        • Kotlin (26)
        • Swift (17)
        • Java (19)
      • 프로그래머스 (68)
      • 주저리주저리 (22)
        • 카페 (5)
        • 음식점 (4)
        • 컨퍼런스 (1)
        • 팝업스토어 (4)
        • 전시회 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    LiveData
    MVVM
    코루틴
    ios
    자바
    CodeLab
    aac
    viewModelScope
    Observer
    안드로이드
    스위프트
    room
    ViewModel
    daterangepicker
    coroutines
    코틀린
    프로그래머스
    jetpack
    Java
    배열
    SWIFT
    programmers
    티스토리챌린지
    databinding
    PCCE
    getNumericValue
    오블완
    Material
    android
    Kotlin
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
BonusTrack02.dev
static 키워드
상단으로

티스토리툴바