IT 개발/Java

[Java] 자바 - static 변수 및 static 메소드의 이해 (특징 및 사용법)

KADOSHOLY 2022. 6. 28. 03:28
반응형

 

자바 - static 변수 및 static 메소드의 이해 (특징 및 사용법)

 

자바-static

 

 

자바에서 멤버변수(필드) 및 멤버함수(메소드) 앞에 static 키워드가 붙어 있는 변수나 메소드들이 있습니다. 이를  static 변수 및 static 메소드 라고하며, 일반적인 인스턴스 변수들과는 달리 프로그램 로딩시에 static영역의 메모리에 올라가기 때문에 객체 생성없이 사용할 수 있습니다. 보통 프로그램 전반에 걸친 전역변수나 공용으로 사용해야 할 변수를 필요로 할 때 사용되는 static 변수 및 메소드에 대해 알아보도록 하겠습니다.

 

 

   목차

  1. static 변수 및 static 메소드 특징
  2. static 변수 및 static 메소드 사용목적
  3. 사용방법 및 예제

 

 

1. static 변수 및 static 메소드 특징

  1. 클래스가 메모리에 로드될때, 스태틱(static) 메모리 영역에 생성됩니다.
  2. 인스턴스를 생성하지 않고도 사용할 수 있습니다.
  3. 동일 클래스의 모든 인스턴스에서 공유하여 사용됩니다. 
  4. 클래스당 하나만 생성되며, 클래스 멤버라고도 부릅니다. 
  5. static 메소드 안에서는 static 멤버들만 사용할수 있고, 인스턴스 멤버는 사용할 수 없습니다. 

 

 

2. static 변수 및 static 메소드 사용목적

  1. 모든 클래스에서 호출 가능한 전역변수나 전역함수를 만들기 위해 사용
  2. static 멤버는 클래스당 하나만 생성되어 클래스의 인스턴스 사이에서 공유됨으로 공유멤버가 필요할 때 사용

 

 

3. 사용방법 및 예제

 

static 멤버는 클래스이름.static멤버이름 형식으로 사용하면 됩니다. 

 

1) Book 클래스 정의

public class Book {
	
	static int price = 1000;               // static 변수
		
	public static void showPrice() {     // static 메소드
		System.out.println("가격:" + price);
	}	
}

 

2) Static멤버 사용

public class HelloWorld {
	public static void main(String[] args) {

		Book.price = 2000;      // 객체 생성없이 클래스명으로 바로 사용
		Book.showPrice();       // 객체 생성없이 클래스명으로 바로 사용
				
		Book b1 = new Book();   // 객체 생성후 사용
		b1.price = 4000;        // 인스턴스 이름으로도 사용가능하나 클래스명으로 사용을 추천함
		b1.showPrice();         // 인스턴스 이름으로도 사용가능하나 클래스명으로 사용을 추천함
	}
}

 

 

3) 실행결과

가격:2000
가격:4000

 

반응형