JAVA/기초

Java에서 static을 사용하는 이유

뿌비 2024. 10. 12. 01:09
728x90

Java에서 static을 사용하는 이유

  • Java에서는 클래스가 기본 단위이며, 클래스 안에 변수(필드)와 메서드를 정의한다.
    다른 곳에서 클래스의 변수나 메서드를 사용하려면 보통 new 클래스명();과 같은 방식으로 인스턴스를 생성해야 한다.
    하지만 클래스 안에 있는 메서드나 변수에 static을 붙이면, 이들을 전역에서 인스턴스를 생성하지 않고도 해당 메서드나 변수에 접근할 수 있다.
    이렇게 하면 불필요한 객체 생성을 피하면서, 공통된 데이터를 효율적으로 관리할 수 있다.

* 인스턴스란? : 클래스를 기반으로 생성된 실제 객체

static의 주요 사용 목적

1. 공유할 값이 있을 때: 클래스의 모든 인스턴스가 공유해야 하는 데이터를 만들고자 할 때 static 변수를 사용한다.

// 예시: 코드에서 totalStudents는 모든 학생 객체가 공유하며, 새로운 학생이 생성될 때마다 그 값이 증가한다. 
// 이를 통해 클래스 전체에서 학생 수를 추적할 수 있다.
public class Student {
    // 모든 학생이 공유할 static 변수
    static int totalStudents = 0; 
    
    public Student() {
        totalStudents++; // 학생 객체가 생성될 때마다 총 학생 수 증가
    }
}

public class Main {
    public static void main(String[] args) {
        // 학생 객체 생성
        Student student1 = new Student();
        Student student2 = new Student();
        
        // 모든 학생이 공유하는 totalStudents를 출력
        // static 변수에 직접 접근하여 객체 생성 없이 값을 참조
        System.out.println("Total Students: " + Student.totalStudents); // 출력: 2
    }
}

 

2. 객체 없이 바로 사용할 때: 자주 사용하는 기능을 객체를 만들지 않고도 사용하고자 할 때 static 메서드를 활용한다.

// 예시
public class Calculator {
    // 객체 없이 사용할 수 있는 static 메서드
    static int add(int a, int b) {
        return a + b; // 두 숫자를 더한 값을 반환
    }
}

public class Main {
    public static void main(String[] args) {
        // 객체 생성 없이 static 메서드 호출
        int result = Calculator.add(3, 5); // 3과 5를 더함
        System.out.println("Result of Addition: " + result); // 출력: 8
    }
}

※ 요약

  • static을 붙이면:  전역에서 인스턴스를 생성하지 않고도 해당 메서드나 변수에 접근할 수 있다.
  • static 변수: 모든 객체가 공유해야 하는 데이터를 만들 때 사용하고, 클래스 이름을 통해 접근한다.
  • static 메서드: 객체 생성 없이 바로 호출할 수 있는 기능을 만들 때 사용한다.

 

728x90