JAVA - 정적멤버와 static & 싱글톤(singleton)

2022. 4. 18. 17:09·STUDY/JAVA
반응형
정적멤버 ?
    클래스에 고정된 멤버
    객체를 생성하지 않고 사용할 수 있는 필드와 메소드

 

1. 정적멤버 선언

  정적필드와 정적 메소드를 선언하는 방법은 필드와 메소드 선언 시 static 키워드를 붙여주면 된다.

public class 클래스{
 static 타입 필드 [= 초기값];
 
 static 리턴 타입 메소드 ( 매개변수 선언, ...){...}

정적 필드와 메소드는 클래스에 고정 -> 클래스 별로 관리 됨

ⓐ 필드를 선언 할 때 판단기준

    객체마다 가지고 있어야 할 데이터 = 인스턴스 필드 ex) static double pi = 3.141592;

    공용적인 데이터 = 정적 필드 ex) String color;

ⓑ 메소드를 선언 할 때 판단기준

    인스턴스 필드를 이용해서 실행 해야 하면 = 인스턴스 메소드

    인스턴스 필드를 사용하지 않는다면 정적 메소드

 

2. 정적멤버 사용

클래스가 메모리로 로딩되면 정적 멤버를 바로 사용할 수 있는데, 클래스 이름과 함께 .(도트 연산자)로 접근

class.field;
class.method(values, ...);

정적필드와 정적 메소드는 원칙적으로는 클래스 이름으로 접근 but, 객체 참조 변수로도 접근 가능(경고 표시 뜸)

 

3. 정적 초기화 블록 

정적 필드는 필드 선언과 동시에 초기값을 주는 것이 보통

  ※ 계산이 필요한 초기화 작업일 경우 정적블록(static block)을 사용

static{
...
}

  * 정적블록은 클래스가 메모리로 로딩될 때 자동적으로 실행(한 클래스 내에 여러개가 선언되어도 상관x)

info는 초기화 x static블록을 이용해서 초기값 설정

 

4. 정적 메소드와 블록 선언 시 주의할 점

객체가 없어도 실행되기 때문에

    ⓐ 내부에 인스턴스 필드나 인스턴스 메소드를 사용할 수 x

    ⓑ this 사용 x

 인스턴스 멤버를 사용하고 싶으면 객체를 먼저 생성 한 뒤 참조 변수로 접근해야 함.

 

5.  싱글톤(singleton)

singleton ?
    단 하나의 객체만 생성

 ⓐ 싱글톤을 만드려면 외부에서 new 연산자로 호출(=객체 생성) 하는걸 막아줘야 함 => private 접근 제한자

 ⓑ 자신의 타입인 정적 필드를 하나 선언하고 자신의 객체를 생성해 초기화 함

 ⓒ 정적 필드도 private 접근제한자를 붙여 외부에서 필드값을 변경하지 못하도록 함

 public class 클래스 {
  //정적필드
private static 클래스 singleton = new 클래스();

  //생성자
private 클래스() {}

  //정적 메소드
static 클래스 getInstance() {
return singleton;
   }
}

 * 외부에서 객체를 얻는 유일한 방법 = getInstance() 메소드 호출

 

6. final 필드와 상수 

final ?
   final 필드는 초기값이 지정되면 최종적인 값이 되어서 더이상 변경할 수 x

final 필드의 초기값 설정 방법

  ⓐ 필드 선언 시 설정

  ⓑ 생성자에서 주는 방법

 

상수(static final) ? 
    불변의 값 ( π, 지구의 무게 등)

 상수는 static 이자 final 이여야 함

 상수 이름은 모두 대문자로 작성하는 것이 관례

반응형
저작자표시 (새창열림)

'STUDY > JAVA' 카테고리의 다른 글

JAVA - 접근제한자 ( public, protected, default, private)  (0) 2022.04.18
JAVA - 패키지, import문  (0) 2022.04.18
JAVA - 메소드  (0) 2022.04.18
JAVA - 객체지향프로그래밍(필드, 생성자)  (0) 2022.04.13
JAVA - 열거타입  (0) 2022.04.13
'STUDY/JAVA' 카테고리의 다른 글
  • JAVA - 접근제한자 ( public, protected, default, private)
  • JAVA - 패키지, import문
  • JAVA - 메소드
  • JAVA - 객체지향프로그래밍(필드, 생성자)
3unB
3unB
  • 3unB
    ILLILI
    3unB
  • 전체
    오늘
    어제
    • 분류 전체보기 (158)
      • STUDY (107)
        • JAVA (30)
        • SPRING (29)
        • JSP (11)
        • DATABASE (19)
        • HTML (0)
        • CSS (4)
        • GITHUB (2)
        • ETC (4)
        • 자격증 (1)
        • ERROR (6)
      • PROJECT (6)
        • Personal_Project 01 - commu.. (1)
        • TeamProject - JOINUS (4)
      • EUNB (30)
        • 맛집 (27)
        • 여행 (3)
        • 전세사기 (0)
      • 오블완챌린지 ++ (11)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 짱민지
    • 아랄이
  • 공지사항

  • 인기 글

  • 태그

    망미 카페
    mysql
    콩콩팥팥 두부
    전포 밥집
    속초 중앙시장 감자전
    오블완
    oracle
    배열 한 컬럼에 넣기
    전포 신상 맛집
    alter
    속초 숙소 내돈내산
    티스토리챌린지
    망미 테린느
    속초 해변 숙소
    전포동 카페
    전포 연어덮밥
    Database
    전포동 맛집
    센텀 신세계백화점 팝업
    망미 조용한 카페
    인제 두부
    망미 바
    서면 맛집
    전포 맛집
    서면 설야멱
    전포 오꼬노미야끼
    인제 고향집
    전포 데이트
    전포동 핫플
    콩콩팥팥 맛집
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.0
3unB
JAVA - 정적멤버와 static & 싱글톤(singleton)
상단으로

티스토리툴바