[신세계I&C KDT][Java 프로그래밍] #8 static (0318)

박현아·2024년 3월 18일
0

신세계아이앤씨 KDT

목록 보기
8/42

1. static 키워드

1) 개념

  • 프로그램 실행과 관련된 키워드임
  • 객체 생성 전에 결정되고 객체 생성인 new와 무관
  • static으로 지정된 변수 및 메서드, 클래스는 프로그램 실행시 생성이 된다 ★

2) 로컬 변수 vs 인스턴스 변수 vs static 변수

(1) 로컬 변수

  • 메서드 안에서 선언. 메서드 호출 ~ 메서드 종료. stack 메모리

(2) 인스턴스 변수

  • 메서드 밖에서 선언. 객체 생성(new) ~ 객체 소멸(heap에 생성된 인스턴스를 참조 못 할 때). heap 메모리
    : Cat c = new Cat();
    c.변수명();
  • new 할 때마다 매번 생성
  • 용도 : 객체의 속성 저장 (고양이 이름, 나이)

(3) static 변수

  • 메서드 밖에서 선언하고 static 지정. 프로그램 실행(main 시작) ~ 프로그램 종료(main 종료). method area 메모리 (객체 생성과 무관하다)
    : 클래스명.static변수();
  • 한 번만 생성되고 life cycle이 길다
  • 용도 : 데이터를 공유

3) 메서드 vs static 메서드

(1) 메서드

  • 객체 생성(new) ~ 객체 소멸
    : Cat c = new Cat();
    c.method();
  • new할 때마다 매번 생성된다 (실제로는 공유한다)

(2) static 메서드

  • 프로그램 실행시 ~ 프로그램 종료시 (객체 생성과 무관하다 ★)
    : 클래스명.static메서드();
  • 한 번만 생성된다
  • 용도 : new 없이 사용하기 위해
    예> Integer.parseInt("10");
  • 주의할 점 : 인스턴스 변수 및 this 사용 불가능 (static 메서드가 먼저 만들어지기 때문)
    상속 관련에서는 오버라이딩 (overriding) 불가능

4) 일반 클래스 vs static 클래스

: 반드시 중첩 클래스에서 사용 가능

public class A { // 외부클래스, outer class
	static class B { // 중첩클래스, nested class, inner class
    }
}

5) static 블럭 ★

  • static {
    실행문;
    }
  • 프로그램 시작할 때 자동으로 실행된다 (초기화 작업 - DB 및 파일 연동)

2. package 및 import

1) package

(1) 용도
: 클래스 파일들 관리 (윈도우의 폴더 역할)
(2) 특징

  • 같은 패키지 안에는 동일 이름의 클래스 지정 불가.
  • 패키지가 다르면 접근이 불가 (접근 하려면 import 이용)
  • Java API는 패키지로 제공된다.
    예> java.lang, java.util

2) import 문

(1) 문법
: import 패키지명.클래스명;
(2) 특징

  • import문은 여러번 지정 가능
  • java.lang은 자동으로 import가 된다 (String, System 클래스들을 import 없이 사용할 수 있음)

3. UML (Unified Modeling Language)

  • 설계 단계에서 추출된 다양한 산출물들을 도식화하는 도구
  • 클래스 다이어그램 (class diagram)
  • private은 - public은 + protected는 # 으로 표기

0개의 댓글