Kim-Baek 개발자 이야기

자바 기본 (14) - static, 싱글톤 본문

개발/java basic

자바 기본 (14) - static, 싱글톤

김백개발자 2020. 10. 5. 02:42
예전에 자바를 처음 공부하던 때, 네이버 블로그에 정리한 내용을 이제 티스토리로 옮기고자 한다


◎ Static 키워드(제한자)
- instance 변수, 메소드, static block, inner class 에서 사용된다.
- 의미 : Class 의 멤버 -> 객체와는 관계없다 (단 한개만 존재하게 된다)

- Card 클래스에서 kind 나 number의 경우 각 카드마다 달라지는 값이다
  그러나 weight, height 의 경우 모든 카드에 동일한 값이다! -> Class 에 종속시키자 (Static)

ex) Class A{
  static int var;           -> new A( ) 를 했을 때, var과 go()는 객체안에 존재하지 않는다.
  static void go( ){
  }
}



※ 메모리 영역
- heap : instance 가 저장되는 영역
- 실행 stack : 실행 중인 메소드의 지역변수가 저장
- Method (Class) 영역 : class 변수들이 저장

※ class의 멤버 : Method (Class)영역에 저장,(메모리) loading 시점은 프로그램이 시작될 때이다.
                                                                                  -> class loading 시점 
- Static 메소드의 경우 instance 멤버에 직접 접근할 수 없다.
 ( static 이 loading 된 시점에 instance 는 로딩이 되지 않는다 -> 객체를 만들어야 한다)

ex) class A{
  int a;
  static void go(){
     System.out.println(a); -> int a 에 접근 불가능
  }
}


◎ 변수의 비교


-> Singleton Pattern
- 객체를 한개만 생성하는 class 구현 패턴
- business logic (업무처리) 처리하는 class 들에 적용

※객체는 속성과 기능을 갖는 것으로 구분 지을 수 있다. 클래스도 마찬가지이다.
   속성을 갖는 클래스 : V.O -> DataType : 회원이 100명이면 100개의 객체를 만들어야하며 그 수에 따라 여러개가 됨.
   기능을 갖는 클래스 : B.S -> 회원을 관리하는 객체가 여러개 만들어 진다면?? 1, 2, 3번 고객은 1번 관리객체가 갖고, 4, 5 번 고객은 2번 관리객체가 갖는 다면 올바르게 관리가 되지 않는다. 전체리스트를 출력하려고 한다면? -> 문제가 발생하기 때문에 이런 클래스는 객체를 하나만 만드는 것이 좋다.


- 싱글톤의 구현

 private static SingletonClass2 instance;
 private SingletonClass2()
 {
  }
 public static SingletonClass2 getInstnace()
 {
  if(instance == null)
  {
   instance = new SingletonClass2();
  }
  return instance;
 }
}

 

※이클립스 사용
- 다른데서 만든 소스코드를 옮길경우 -> 드래그를 통해 src 에 넣자 (copy 는 workspace 에, link 파일의 위치에서 부른다)
- 이클립스 기능 - 오른쪽 마우스키 source -> organize import (ctrl + shift + o) 하면 자동으로 import 한다.


※API
API 다운로드 - oracle.com -> java for development ->Java se 8 documentation

public static final
어디서는 같은 값을 사용할 수 있도록 한다. 보통 int 로 많이 표현(string 은 switch 문으ㅏ 사용 불가능 하고, int 의 경우 실제 값과 매치가 잘 안되기 떄문에 상수형을 쓰도록 강제하는 효과도 있다)

반응형
Comments