검수요청.png검수요청.png

"스태틱"의 두 판 사이의 차이

해시넷
이동: 둘러보기, 검색
잔글
잔글 (스태틱 변수(정적 변수))
19번째 줄: 19번째 줄:
 
스태틱 변수는 메모리가 클래스에 귀속되며 각각의 오브젝트에 귀속되지 않는다. 일반 변수는 객체마다 1개 생성되며 n개의 객체가 있을 때는 n번 생성된다. 스태틱 변수는 객체가 n개 있어도 단 한개만 생성된다.
 
스태틱 변수는 메모리가 클래스에 귀속되며 각각의 오브젝트에 귀속되지 않는다. 일반 변수는 객체마다 1개 생성되며 n개의 객체가 있을 때는 n번 생성된다. 스태틱 변수는 객체가 n개 있어도 단 한개만 생성된다.
 
이런 스태틱 변수를 사용하기 위해서는 <클래스 이름>.<스태틱 변수 이름>으로 사용이 가능하다. 클래스에 속해있으므로 오브젝트를 따로 생성하지 않아도 바로 사용이 가능하다.<ref name="특징1">삐멜 소프트웨어 엔지니어, <[https://imasoftwareengineer.tistory.com/73 9.static변수 static 메소드]>, 《개인블로그》,2019-04-03</ref>
 
이런 스태틱 변수를 사용하기 위해서는 <클래스 이름>.<스태틱 변수 이름>으로 사용이 가능하다. 클래스에 속해있으므로 오브젝트를 따로 생성하지 않아도 바로 사용이 가능하다.<ref name="특징1">삐멜 소프트웨어 엔지니어, <[https://imasoftwareengineer.tistory.com/73 9.static변수 static 메소드]>, 《개인블로그》,2019-04-03</ref>
 +
 +
public class 클래스 {
 +
    static int 스태틱변수 = 1234;
 +
    int 일반변수 = 123;
 +
}
 +
 +
public class 메인 {
 +
    public static void main(String[] args) {
 +
        System.out.println(클래스.스태틱변수);
 +
       
 +
        클래스 클래스1 = new 클래스;
 +
        클래스 클래스2 = new 클래스;
 +
    }
 +
 +
 +
}
 +
 +
위에서 보는 것과 같이 스태틱 변수는 클래스에 귀속되어 있기 때문에 객체를 생성하지 않아도 사용이 가능하며 클래스를 이용해 새로운 객체를 생성하더라도 스태틱 변수는 계속 생성되지 않고 하나만 생성되어 사용된다.
 +
 
[[파일:스태틱_변수.PNG]]
 
[[파일:스태틱_변수.PNG]]
 
  
 
===스태틱 메소드(정적 메소드)===
 
===스태틱 메소드(정적 메소드)===

2020년 8월 13일 (목) 10:21 판

스태틱(static)은 객체 지향 프로그래밍(OOP)에서 모든 인스턴스에서 공통적으로 사용할 수 있는 클래스 변수 또는 클래스 메소드에 사용하는 제어자이다. ‘스태틱’이라고 읽는다. 영어로 static은 ‘정적인’, ‘정지 상태의’라는 뜻이다.

개요

자바에서 스태틱 키워드를 사용한다는 것은 메모리에 한번 할당되어 프로그램이 종료될 때 해제되는 것을 의미합니다. 이를 정확히 이해하기 위해서는 메모리 영역에 대한 이해가 필요하다. 일반적으로 우리가 만든 클래스는 스태틱 영역에 생성되고, new 연산을 통해 생성한 객체는 Heap영역에 생성된다. 객체의 생성시 할당된 Heap역역의 메모리는 가비지 컨트롤러를 통해 수시로 관리를 받는다. 하지만 스태틱 키워드를 통해 스태틱 영역에 할당된 메모리는 모든 객체가 공유하는 메모리라는 장점을 지니지만, 가비지 컨트롤러의 관리 영역 밖에 존재하므로 스태틱을 자주 사용하면 프로그램의 종료시까지 메모리가 할당된 채 존재하게 된다.[1]

특징

자바에서 스태틱은 메모리에 한번 할당되어 프로그램이 종료될 때 해제되는 것으로로, 메모리에 한번 할당되어 여러 객체가 해당 메모리를 공유한다.

public class Animel {
    private String name = "Reptiles";
    
    public void printName() {
        System.out.println(this.name);
    }
}

위와 같은 클래스로 객체를 여러개 생성할 시 Reptiles라는 메모리를 여러개 생성하게 된다. 하지만 이러한 경우에 static을 사용한다면 객체 하나의 메모리를 참조해 메모리 효율을 높일 수 있다.[1]

스태틱 변수(정적 변수)

스태틱 변수는 메모리가 클래스에 귀속되며 각각의 오브젝트에 귀속되지 않는다. 일반 변수는 객체마다 1개 생성되며 n개의 객체가 있을 때는 n번 생성된다. 스태틱 변수는 객체가 n개 있어도 단 한개만 생성된다. 이런 스태틱 변수를 사용하기 위해서는 <클래스 이름>.<스태틱 변수 이름>으로 사용이 가능하다. 클래스에 속해있으므로 오브젝트를 따로 생성하지 않아도 바로 사용이 가능하다.[2]

public class 클래스 {
   static int 스태틱변수 = 1234;
   int 일반변수 = 123;
}
public class 메인 {
   public static void main(String[] args) {
       System.out.println(클래스.스태틱변수);
       
       클래스 클래스1 = new 클래스;
       클래스 클래스2 = new 클래스;
   }


}

위에서 보는 것과 같이 스태틱 변수는 클래스에 귀속되어 있기 때문에 객체를 생성하지 않아도 사용이 가능하며 클래스를 이용해 새로운 객체를 생성하더라도 스태틱 변수는 계속 생성되지 않고 하나만 생성되어 사용된다.

스태틱 변수.PNG

스태틱 메소드(정적 메소드)

스태틱 메소드는 객체의 생성없이 호출이 가능하며, 객체에서는 호출이 불가능하다. 대체로 유틸 관련 함수들이 여러번 사용되므로 스태틱 메소드로 구현된다. 그렇기 때문에 전역으로 자주 사용할 메소드를 스태틱 메소드로 만들어서 사용한다. 프로젝트 내에서 공통적으로 사용해야할 메소드가 있으면 스태틱 메소드로 생성해 불필요한 코드 수를 줄이게 된다.[2]


각주

  1. 1.0 1.1 망나니개발자, <static변수와 static 메소드>, 《개인블로그》,2019-02-04
  2. 2.0 2.1 삐멜 소프트웨어 엔지니어, <9.static변수 static 메소드>, 《개인블로그》,2019-04-03

참고자료

같이 보기


  검수요청.png검수요청.png 이 스태틱 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.