본문 바로가기
✨ Java/etc

자바(JAVA) - Static의 의미

by 환풍 2023. 7. 5.
728x90
반응형

정적(Static)이란

 - 고정된 의미를 갖고 있다. Static이란 키워드를 사용해 Static 변수, Static 메소드를 만들 수 있다. 이를 정적 필드와 정적 메소드라고 하며 이 둘을 합쳐 정적 멤버(클래스 멤버)라고 부른다.

정적 필드와 정적 메소드는 객체에 소속된 멤버가 아니라 클래스에 고정된 멤버이다. 클래스 로더가 클래스를 로딩해서 메소드 메모리 영역에 적재할 때 클래스별로 관리된다. 그렇기 때문에 클래스의 로딩이 끝나는 즉시 바로 사용가능하다.

즉, Java에서 Static 키워드를 사용한다는 것은 메모리에 한번 할당되어 프로그램이 종료될 때 해제되는 것을 의미한다.

일반적으로 우리가 만든 Class는 Static 영역에 생성되고, new 연산을 통해 생성한 객체는 Heap영역에 생성된다.

 

 

 

Static 필드 사용 예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package zon;
 
class Number{
    static int num = 0//클래스 필드
    int num2 = 0//인스턴스 필드
}
public class SingleStudy {
    public static void main(String[] args) {
        Number number1 = new Number(); //첫번째 number
        Number number2 = new Number(); //두번쨰 number
        
        number1.num++//클래스 필드 num을 1증가시킴
        number1.num2++//인스턴스 필드 num을 1증가시킴
        System.out.print(Number.num);
        System.out.println();
        System.out.print(number1.num);
        System.out.print(number1.num2);
        System.out.println();
        System.out.print(number2.num); //두번째 number의 클래스 필드 출력
        System.out.print(number2.num2); //두번째 number의 인스턴스 필드 출력
    }
}
 
cs

 

Static 메서드 사용 예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Name{
    static void print() { //클래스 메소드
        System.out.println("내 이름은 홍길동입니다.");
    }
 
    void print2() { //인스턴스 메소드
        System.out.println("내 이름은 이순신입니다.");
    }
}
 
public class Main {
 
    public static void main(String[] args) {
        Name.print(); //인스턴스를 생성하지 않아도 호출이 가능
 
        Name name = new Name(); //인스턴스 생성
        name.print2(); //인스턴스를 생성하여야만 호출이 가능
    }
}
cs

 

 

Reference
https://coding-factory.tistory.com/524

 

728x90
반응형

댓글