게으른 개발자의 끄적거림

Java static이란? static변수 설명

끄적잉 2024. 1. 2. 22:18
728x90

`static`은 Java 프로그래밍 언어에서 사용되는 키워드로, 특정 멤버(변수, 메서드)를 클래스 레벨에 속하도록 지정하는 데 사용됩니다. `static` 멤버는 클래스의 인스턴스에 종속되지 않고, 클래스 자체에 속합니다. 여러 인스턴스가 해당 `static` 멤버를 공유하게 됩니다.

1. **`static` 변수 (클래스 변수):**
   - 클래스 레벨에 선언되어 클래스의 모든 인스턴스 간에 공유됩니다.
   - 인스턴스 생성 없이도 클래스 이름을 통해 접근할 수 있습니다.
   - 주로 상수나 모든 인스턴스에서 공통으로 사용되는 속성에 사용됩니다.


   public class MyClass {
       // static 변수 (클래스 변수)
       public static int staticVariable = 10;

       public static void main(String[] args) {
           // 클래스 이름을 통한 접근
           System.out.println(MyClass.staticVariable);
       }
   }


2. **`static` 메서드 (클래스 메서드):**
   - 클래스 레벨에 속하며 인스턴스를 생성하지 않고도 호출할 수 있습니다.
   - 주로 유틸리티 메서드나 객체 생성 없이 수행되는 작업에 사용됩니다.


   public class MathUtils {
       // static 메서드 (클래스 메서드)
       public static int add(int a, int b) {
           return a + b;
       }

       public static void main(String[] args) {
           // 인스턴스 생성 없이 호출 가능
           int result = MathUtils.add(5, 3);
           System.out.println(result);
       }
   }

 


3. **`static` 블록:**
   - 정적 블록은 클래스가 로딩될 때 실행되는 블록입니다. 클래스가 처음으로 로딩될 때 한 번만 실행됩니다.
   - 주로 클래스 초기화에 필요한 작업을 수행하는 데 사용됩니다.


   public class StaticBlockExample {
       // static 블록
       static {
           System.out.println("This is a static block.");
       }

       public static void main(String[] args) {
           // 클래스를 사용하는 메인 메서드
       }
   }


4. **`static` 클래스:**
   - 중첩 클래스 내에 `static` 키워드를 사용하면, 해당 클래스는 바깥쪽 클래스의 인스턴스에 종속되지 않습니다.



   public class OuterClass {
       // static 중첩 클래스
       static class StaticNestedClass {
           // ...
       }
   }


주의: `static` 멤버는 인스턴스 변수 및 메서드에 비해 메모리를 적게 사용하지만, 공유되는 특성으로 인해 신중하게 사용해야 합니다. 상황에 따라 적절한 사용이 필요하며, 너무 남발하면 객체지향의 장점을 잃을 수 있습니다.

728x90

'게으른 개발자의 끄적거림' 카테고리의 다른 글

try catch exception 설명  (0) 2024.01.03
private static 쓰는 경우  (0) 2024.01.03
싱글톤 패턴(Singleton Pattern)이란?  (0) 2024.01.02
Java 업로드 (.pdf .jpg .zip)  (0) 2023.12.28
Java EE란?  (0) 2023.12.27