Java

[ java ] static 변수

JooKit 주킷 2020. 12. 17. 20:46
목차 접기
728x90
반응형
package algo2;

public class Student {

    public static int serialNum = 1000;
    public int studentID;
    public String studentName;
    public int grade;
    public String address;

    public Student() {
        serialNum++;
        this.studentID = serialNum;
    }

    public void setStudentName(String name) {
        this.studentName = name;
    }

    public String getStudentName() {
        return this.studentName;
    }
}
package algo2;

public class Main {

    public static void main(String[] args) {

        Student student1 = new Student();

        student1.setStudentName("홍길동");
        System.out.println("serialNum : " + student1.serialNum);
        System.out.println(student1.getStudentName() + "의 학번은 " + student1.studentID + " 입니다.");


        Student student2 = new Student();

        student2.setStudentName("개똥이");
        System.out.println("serialNum : " + student1.serialNum);
        System.out.println("serialNum : " + student2.serialNum);
        System.out.println(student2.getStudentName() + "의 학번은 " + student2.studentID + " 입니다.");        


    }

}
객체 지향 프로그램은 객체를 정의하고 객체 간 협력으로 만든다.
  • 우리가 객체를 클래스로 만들어 구현하면 객체 사이에는 서로 어떤 값을 주고받고 메서드를 호출하는 일이 발생한다.

구현 과정

  • 맨 처음 필요한 객체를 정의한다.
  • 그리고 각 객체에 필요한 멤버 변수를 선언하고, 생성자를 정의한다.
자바 가상 머신은 클래스 파일을 컴파일하며 생성자를 선언하지 않으면 디폴트 생성자(default constructor)를 자동으로 생성해준다.
  • 하나의 경우에 대해 두 객체에서 서로 다른 일이 발생하는 것이므로 이를 각각의 클래스에 메서드로 구현했다.
  • 객체 지향 프로그램은 현실 세계를 가장 잘 반영한 프로그램 방식이라고도 한다.

static 변수

  • 예약어인 static 변수는 다른 용어로 정적 변수라고도 한다.
  • static 변수는 자바뿐만 아니라 다른 언어에서도 비슷한 개념으로 사용하고 있는 변수로서 자바에서는 다른 멤버 변수처럼 클래스 내부에 선언한다.
  • static 변수는 클래스 내부에 선언하지만, 다른 멤버 변수처럼 인스턴스가 생성될 때마다 새로 생성되는 변수가 아니다.
  • static변수는 프로그램이 실행되어 메모리에 올라갔을 때 딱 한번 메모리 공간이 할당된다.
  • 그리고 그 값은 모든 인스턴스가 공유한다.

static 변수 유용한 정보

  • 일반 멤버 변수는 인스턴스가 생성될 때마다 새로 생성되어 각각 다른 studentName을 가지게 되지만,
    static으로 선언한 변수는 인스턴스 생성과 상관없이 먼저 생성되고 그 값을 모든 인스턴스가 공유하게 되는 것이다.
    이런 이유 때문에 static 변수를 클래스에 기반한 변수라고 해서 클래스 변수(class variable)라고도 한다.
  • static 변수는 인스턴스에 상관없이 동일한 데이터의 메모리를 가리킨다.
  • static 변수는 같은 클래스에서 생성된 인스턴스들이 같은 값을 공유할 수 있으므로, 인스턴스 간에 공통으로 사용할 값이 필요한 경우
    유용하게 사용할 수 있다.
728x90
반응형
LIST