[Java] static 키워드

2023. 2. 9. 00:02·Java/Base
728x90
728x90

static 변수 (클래스 변수, 정적 변수)

// 선언
static 자료형 멤버변수명;

 

  - 여러 객체들이 공유하는 하나의 변수(데이터)가 필요할 때 사용하는 멤버변수

  - 객체가 생성되기 이전 (new 키워드 이전), 처음 프로그램이 메모리에 로딩될 때 메모리를 할당 받음

      → 객체 생성과 관계 없이 해당 멤버변수에 접근할 수 있음

      → 참조변수 대신, 클래스 이름으로 직접 참조 가능 : 클래스명.멤버변수명

  - 객체(인스턴스)들이 공통으로 사용하는 영역

      → 모든 객체가 같은 값을 담고 있음

      → static 변수만 사용하면 각각의 객체가 고유한 상태 값을 가지도록 할 수 없음

      → 다른 멤버변수를 활용해서 저장하기

 

// 예시 : 다른 멤버변수를 활용해 각 객체들에게 고유한 값 할당 //

// 멤버변수
public static int serialNum;
private int employeeId;

// 생성자
public Employee() {
    serialNum++;
    this.employeeId = serialNum; // static 변수 값을 다른 멤버변수에 저장
}

 

// 예시 : 기기가 2대 이상인 은행에서 대기 표를 뽑을 경우 //

public class NumberPrinter {
    private int id;
    public static int waitNumber;

    public NumberPrinter(int id) {
        this.id = id;
        this.waitNumber = 1; // 대기 순번은 1부터 시작함
    }

    // 번호표를 출력함
    public void printwaitNumber() {
        System.out.println("대기 순번 " + waitNumber);
        waitNumber++;
    }
    // 출력 : 대기 순번 1 -> 대기 순번 2 -> 대기 순번 3 -> ...
}

 

static 메서드 (클래스 메서드, 정적 메서드)

// 구현
[접근제어자] static 자료형 메서드명(자료형 매개변수) {
    코드;
}

 

  - 객체가 생성되기 이전 (new 키워드 이전), 처음 프로그램이 메모리에 로딩될 때 메모리를 할당 받음

      → 객체 생성과 관계 없이 해당 메서드를 호출할 수 있음

      → 참조변수 대신, 클래스 이름으로 직접 호출 가능 : 클래스명.메서드명(매개변수);

  - static 메서드 안에서는 (static이 아닌) 멤버변수를 활용할 수 없음

      : 객체가 메모리에 로드된 상태라고 보장할 수 없기 때문임

  - 지역변수는 사용 가능함

       

320x100
반응형
저작자표시 비영리 변경금지 (새창열림)

'Java > Base' 카테고리의 다른 글

[Java] 상속 관계와 메서드 오버라이드  (0) 2023.02.09
[Java] 배열  (0) 2023.02.09
[Java] this 키워드와 super 키워드  (0) 2023.02.08
[Java] 배열 - 도서 정보 등록·조회·삭제 프로그램 구현  (0) 2023.02.08
[Java] 접근 제어 지시자와 get(), set() 메서드  (0) 2023.02.07
'Java/Base' 카테고리의 다른 글
  • [Java] 상속 관계와 메서드 오버라이드
  • [Java] 배열
  • [Java] this 키워드와 super 키워드
  • [Java] 배열 - 도서 정보 등록·조회·삭제 프로그램 구현
스응
스응
    반응형
    250x250
  • 스응
    이서영의 개발 블로그
    스응
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (385)
      • Java (134)
        • Base (54)
        • Spring Boot (37)
        • JSP (16)
        • Swing (GUI) (20)
        • Design Pattern (7)
      • C# (13)
      • PHP (18)
      • SQL (27)
      • Vue.js (9)
      • Tailwind CSS (4)
      • TypeScript (7)
      • HTML & CSS (27)
      • JavaScript (26)
      • jQuery (10)
      • Android (3)
      • - - - - - - - - - - - - - - (0)
      • Hotkeys (5)
      • CS (30)
      • IT Notes (13)
      • Error Notes (17)
      • Team Project (24)
        • Airlines Web Project (12)
        • University Web Project (6)
        • Strikers 1945 GUI Project (6)
      • My Project (18)
        • Library Web Project (8)
        • Pet Shopping Mall GUI Project (10)
      • etc. (0)
  • 블로그 메뉴

    • Home
    • Write
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    Hotkeys
    SWAGGER
    면접
    java
    C#
    오블완
    jsp
    js
    티스토리챌린지
    cs
    CSS
    http
    git
    SEO
    php
    Swing
    zapier
    SQL
    errorNote
    tailwindcss
    Wordpress
    Android
    HTML
    SpringBoot
    jQuery
    vuejs
    typeScript
    Codeigniter
    개발일지
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
스응
[Java] static 키워드
상단으로

티스토리툴바